diff --git a/payment/lib/Drupal/payment/Plugin/Payment/MethodSelector/PaymentSelect.php b/payment/lib/Drupal/payment/Plugin/Payment/MethodSelector/PaymentSelect.php
index db997e2..0afbe61 100644
--- a/payment/lib/Drupal/payment/Plugin/Payment/MethodSelector/PaymentSelect.php
+++ b/payment/lib/Drupal/payment/Plugin/Payment/MethodSelector/PaymentSelect.php
@@ -23,7 +23,7 @@ class PaymentSelect extends PaymentMethodSelectorBase {
    * {@inheritdoc}
    */
   public function formElements(array $form, array &$form_state, PaymentInterface $payment) {
-    $elements = array(
+    $form['selector'] = array(
       '#input' => TRUE,
       '#payment' => $payment,
       '#process' => array(array($this, 'process')),
@@ -32,7 +32,7 @@ class PaymentSelect extends PaymentMethodSelectorBase {
       '#type' => FALSE,
     );
 
-    return $elements;
+    return $form;
   }
 
   /**
diff --git a/payment_reference/lib/Drupal/payment_reference/Element/PaymentReference.php b/payment_reference/lib/Drupal/payment_reference/Element/PaymentReference.php
index 5bb1eb1..bb555ff 100644
--- a/payment_reference/lib/Drupal/payment_reference/Element/PaymentReference.php
+++ b/payment_reference/lib/Drupal/payment_reference/Element/PaymentReference.php
@@ -35,13 +35,13 @@ class PaymentReference {
     }
 
     // Find the default payment to use.
-    $pid = $element['#default_value'];
-    if (!$pid) {
-      $pids = PaymentReferenceServiceWrapper::queue()->loadPaymentIds($element['#field_instance_id'], $element['#owner_id']);
-      $pid = reset($pids);
+    $payment_id = $element['#default_value'];
+    if (!$payment_id) {
+      $payment_ids = PaymentReferenceServiceWrapper::queue()->loadPaymentIds($element['#field_instance_id'], $element['#owner_id']);
+      $payment_id = reset($payment_ids);
     }
     // Form API considers an empty string to be an empty value, but not NULL.
-    $element['#value'] = $pid ? $pid : '';
+    $element['#value'] = $payment_id ? $payment_id : '';
 
     // AJAX.
     $ajax_wrapper_id = drupal_html_id('payment_reference-' . $element['#name']);
@@ -53,19 +53,35 @@ class PaymentReference {
       'type' => 'setting',
         'data' => array(
           'PaymentReferencePaymentAvailable' => array(
-            $ajax_wrapper_id => !empty($pid),
+            $ajax_wrapper_id => !empty($payment_id),
           ),
         ),
       ),
     );
 
-    // Payment information.
-    $element['payment'] = array(
-      '#empty' => t('There are no line items.'),
-      '#header' => array(t('Amount'), t('Status'), t('Last updated')),
-      '#type' => 'table',
-    );
-    if (!$pid) {
+    // There are no queued payments, so display a payment method configuration
+    // form.
+    if (!$payment_id) {
+      $payment = $this->getEntity();
+      $form['line_items'] = array(
+        '#payment' => $payment,
+        '#type' => 'payment_line_items_display',
+      );
+      $config = \Drupal::config('payment_reference.payment_type');
+      $payment_method_selector_id = $config->get('payment_selector_id');
+      $allowed_payment_method_ids = $config->get('allowed_payment_method_ids');
+      $payment_method_selector = Payment::methodSelectorManager()->createInstance($payment_method_selector_id);
+      if (!is_null($allowed_payment_method_ids)) {
+        $payment_method_selector->setAllowedPaymentMethods($allowed_payment_method_ids);
+      }
+      $form['payment_method'] = array();
+      $form['payment_method']['']
+
+      $form['payment_method'] = $payment_method_selector->formElements(array(), $form_state, $payment);
+
+
+
+
       $amount = 0;
       foreach ($element['#payment_line_items_data'] as $line_item_data) {
         $line_item = Payment::lineItemManager()->createInstance($line_item_data['plugin_id'], $line_item_data['plugin_configuration']);
@@ -87,13 +103,19 @@ class PaymentReference {
         )),
       );
     }
+    // There is a queued payment, so display its information.
     else {
       /** @var \Drupal\payment\Entity\PaymentInterface $payment */
-      $payment = entity_load('payment', $pid);
+      $payment = entity_load('payment', $payment_id);
       /** @var \Drupal\currency\Entity\CurrencyInterface $currency */
       $currency = entity_load('currency', $payment->getCurrencyCode());
       $status = $payment->getStatus();
       $status_definition = $status->getPluginDefinition();
+      $element['payment'] = array(
+        '#empty' => t('There are no line items.'),
+        '#header' => array(t('Amount'), t('Status'), t('Last updated')),
+        '#type' => 'table',
+      );
       $element['payment'][0]['amount'] = array(
         '#markup' => $currency->formatAmount($payment->getAmount()),
       );
diff --git a/payment_reference/lib/Drupal/payment_reference/Entity/PaymentFormController.php b/payment_reference/lib/Drupal/payment_reference/Entity/PaymentFormController.php
index 1e81dc9..84c0abe 100644
--- a/payment_reference/lib/Drupal/payment_reference/Entity/PaymentFormController.php
+++ b/payment_reference/lib/Drupal/payment_reference/Entity/PaymentFormController.php
@@ -40,7 +40,6 @@ class PaymentFormController extends EntityFormController {
     return new static($container->get('plugin.manager.payment.method_selector'));
   }
 
-
   /**
    * {@inheritdoc}
    */
