public function updateCustomer($customer_id, CreditCard $creditcard = null, $options = array())
    {
        $this->post = array();

        $options = new Options($options);

        $this->addCustomerData($options);
        $this->addAddress($options);
        $address = $this->post['address'];
        unset($this->post['address']);
        $this->post = array_merge($this->post, $address);

        if (null !== $creditcard) {
            $this->addRecurringCreditcard($creditcard);
        }

        $customer_id = urlencode(trim($customer_id));

        return $this->commit("customers/{$customer_id}", RequestInterface::METHOD_PUT);
    }