public function recurring($plan, CreditCard $creditcard, $options = array())
    {
        $this->post = array();

        Options::required('first_name, last_name, email, customer_id, start_date, period', $options);

        $options = new Options($options);

        if (null === $options->customer_id) {
            $response = $this->createCustomer($creditcard, $options);
            $customer_id = $response->params()->id;
        } else {
            $customer_id = $options->customer_id;
        }

        $this->post['customer'] = $customer_id;
        $start_date = $options->start_date instanceof \DateTime ? $options->start_date : new \DateTime(strtotime($options->start_date));
        $this->post['start_date'] = $start_date->format('Y-m-d');
        $this->post['plan'] = $plan;
        $this->post['frequency'] = $options->period;
        $this->post['is_active'] = true;
        $this->post['reference'] = $options->customer_id;

        return $this->commit('subscriptions');
    }