public function add($id, $name = null, $qty = null, $price = null, Array $options = array())
        {
            // If the first parameter is an array we need to call the add() function again
            if(Arrays::is($id)) {
                // And if it's not only an array, but a multidimensional array, we need to
                // recursively call the add function
                if($this->isMulti($id)) {
                    foreach($id as $item) {
                        $options = Arrays::exists('options', $item) ? $item['options'] : array();
                        $this->addRow($item['id'], $item['name'], $item['qty'], $item['price'], $options);
                    }

                    return;
                }

                $options = Arrays::exists('options', $id) ? $id['options'] : array();
                return $this->addRow($id['id'], $id['name'], $id['qty'], $id['price'], $options);
            }

            return $this->addRow($id, $name, $qty, $price, $options);
        }