diff --git a/payment/uc_payment/lib/Drupal/uc_payment/Form/OrderPaymentsForm.php b/payment/uc_payment/lib/Drupal/uc_payment/Form/OrderPaymentsForm.php
index 28e8472..534ec7d 100644
--- a/payment/uc_payment/lib/Drupal/uc_payment/Form/OrderPaymentsForm.php
+++ b/payment/uc_payment/lib/Drupal/uc_payment/Form/OrderPaymentsForm.php
@@ -107,15 +107,11 @@ class OrderPaymentsForm extends FormBase {
       $form['payments']['new']['user'] = array(
         '#markup' => '-',
       );
-      $methods = _uc_payment_method_list();
-      foreach ($methods as $id => $method) {
-        $options[$id] = $method['name'];
-      }
       $form['payments']['new']['method'] = array(
         '#type' => 'select',
         '#title' => t('Method'),
         '#title_display' => 'invisible',
-        '#options' => $options,
+        '#options' => $this->container()->get('plugin.manager.uc_payment.method')->listOptions(),
       );
       $form['payments']['new']['amount'] = array(
         '#type' => 'textfield',
diff --git a/payment/uc_payment/lib/Drupal/uc_payment/Form/PaymentMethodsForm.php b/payment/uc_payment/lib/Drupal/uc_payment/Form/PaymentMethodsForm.php
index e208cae..5a816e5 100644
--- a/payment/uc_payment/lib/Drupal/uc_payment/Form/PaymentMethodsForm.php
+++ b/payment/uc_payment/lib/Drupal/uc_payment/Form/PaymentMethodsForm.php
@@ -63,8 +63,6 @@ class PaymentMethodsForm extends ConfigFormBase {
    * {@inheritdoc}
    */
   public function buildForm(array $form, array &$form_state) {
-    $methods = _uc_payment_method_list();
-
     $form['methods'] = array(
       '#type' => 'table',
       '#header' => array(t('Payment method'), t('List position'), t('Operations')),
@@ -77,7 +75,7 @@ class PaymentMethodsForm extends ConfigFormBase {
       ),
     );
 
-    foreach ($methods as $id => $method) {
+    foreach (uc_payment_method_list() as $id => $method) {
       $form['methods'][$id]['#attributes']['class'][] = 'draggable';
       $form['methods'][$id]['status'] = array(
         '#type' => 'checkbox',
@@ -142,11 +140,9 @@ class PaymentMethodsForm extends ConfigFormBase {
    * {@inheritdoc}
    */
   public function submitForm(array &$form, array &$form_state) {
-    $methods = _uc_payment_method_list();
-
-    foreach ($methods as $id => $method) {
-      variable_set('uc_payment_method_' . $id . '_checkout', $form_state['values']['methods'][$id]['status']);
-      variable_set('uc_payment_method_' . $id . '_weight', $form_state['values']['methods'][$id]['weight']);
+    foreach ($form_state['values']['methods'] as $id => $method) {
+      variable_set('uc_payment_method_' . $id . '_checkout', $method['status']);
+      variable_set('uc_payment_method_' . $id . '_weight', $method['weight']);
     }
 
     $this->paymentMethodManager->clearCachedDefinitions();
diff --git a/payment/uc_payment/lib/Drupal/uc_payment/Plugin/PaymentMethodManager.php b/payment/uc_payment/lib/Drupal/uc_payment/Plugin/PaymentMethodManager.php
index 690384b..08aad10 100644
--- a/payment/uc_payment/lib/Drupal/uc_payment/Plugin/PaymentMethodManager.php
+++ b/payment/uc_payment/lib/Drupal/uc_payment/Plugin/PaymentMethodManager.php
@@ -65,4 +65,18 @@ class PaymentMethodManager extends DefaultPluginManager {
     return $this->createInstance($order->getPaymentMethodId());
   }
 
+  /**
+   * Populates a key-value pair of available payment methods.
+   *
+   * @return array
+   *   An array of payment method labels, keyed by ID.
+   */
+  public function listOptions() {
+    $options = array();
+    foreach ($this->getDefinitions() as $key => $definition) {
+      $options[$key] = $definition['name'];
+    }
+    return $options;
+  }
+
 }
diff --git a/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/field/Method.php b/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/field/Method.php
index 73b7cc5..9ce08c3 100644
--- a/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/field/Method.php
+++ b/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/field/Method.php
@@ -24,7 +24,7 @@ class Method extends FieldPluginBase {
    */
   public function render(ResultRow $values) {
     $value = $this->getValue($values);
-    $methods = _uc_payment_method_list();
+    $methods = uc_payment_method_list();
     return $this->sanitizeValue($methods[$value]['name']);
   }
 
diff --git a/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/filter/Method.php b/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/filter/Method.php
index 1b322d3..c938004 100644
--- a/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/filter/Method.php
+++ b/payment/uc_payment/lib/Drupal/uc_payment/Plugin/views/filter/Method.php
@@ -25,9 +25,8 @@ class Method extends InOperator {
     if (!isset($this->value_options)) {
       $this->value_options = array();
 
-      $methods = _uc_payment_method_list();
-      foreach ($methods as $method) {
-        $this->value_options[$method['id']] = $method['name'];
+      foreach (uc_payment_method_list() as $id => $method) {
+        $this->value_options[$id] = $method['name'];
       }
     }
   }
diff --git a/payment/uc_payment/uc_payment.module b/payment/uc_payment/uc_payment.module
index 5ac4241..716dbe2 100644
--- a/payment/uc_payment/uc_payment.module
+++ b/payment/uc_payment/uc_payment.module
@@ -66,8 +66,7 @@ function uc_payment_theme() {
  * Adds express buttons for enabled payment modules directly to the cart page.
  */
 function uc_payment_form_uc_cart_view_form_alter(&$form, &$form_state) {
-  $methods = _uc_payment_method_list();
-  foreach ($methods as $id => $method) {
+  foreach (uc_payment_method_list() as $id => $method) {
     if ($method['checkout'] && isset($method['express']) && $express = $method['express'](array(), $form_state)) {
       $form['actions']['checkout'][$id] = $express;
     }
@@ -124,9 +123,8 @@ function uc_payment_uc_order($op, $order) {
 
       // Call each payment method to delete method-specific data from the
       // database.
-      $methods = _uc_payment_method_list();
-      foreach ($methods as $method) {
-        Drupal::service('plugin.manager.uc_payment.method')->createInstance($method)->orderDelete($order);
+      foreach (uc_payment_method_list() as $id => $method) {
+        Drupal::service('plugin.manager.uc_payment.method')->createInstance($id)->orderDelete($order);
       }
       break;
   }
@@ -463,13 +461,14 @@ function uc_payment_load_payments($order_id) {
 }
 
 /**
- * Builds a list of payment methods defined in the enabled modules.
+ * Returns a list of available payment methods plugins.
+ *
+ * @return array
+ *   An array of payment method definitions, keyed by method ID.
  */
-function _uc_payment_method_list() {
+function uc_payment_method_list() {
   $methods = Drupal::service('plugin.manager.uc_payment.method')->getDefinitions();
-
   uasort($methods, 'uc_weight_sort');
-
   return $methods;
 }
 
diff --git a/payment/uc_payment/uc_payment.rules_defaults.inc b/payment/uc_payment/uc_payment.rules_defaults.inc
index 6f29286..e0a8035 100644
--- a/payment/uc_payment/uc_payment.rules_defaults.inc
+++ b/payment/uc_payment/uc_payment.rules_defaults.inc
@@ -54,14 +54,13 @@ function uc_payment_default_rules_configuration() {
     ));
   $configs['uc_checkout_complete_paid'] = $rule;
 
-  $methods = _uc_payment_method_list();
-  foreach ($methods as $id => $method) {
+  foreach (uc_payment_method_list() as $id => $method) {
     $set = rules_and(array(
       'order' => array('type' => 'uc_order', 'label' => t('Order')),
     ));
     $set->label = t('@method conditions', array('@method' => $method['name']));
 
-    $configs['uc_payment_method_' . $method['id']] = $set;
+    $configs['uc_payment_method_' . $id] = $set;
   }
 
   return $configs;
diff --git a/payment/uc_payment/uc_payment_checkout_pane.inc b/payment/uc_payment/uc_payment_checkout_pane.inc
index ce102bf..d4f22d3 100644
--- a/payment/uc_payment/uc_payment_checkout_pane.inc
+++ b/payment/uc_payment/uc_payment_checkout_pane.inc
@@ -32,7 +32,7 @@ function uc_checkout_pane_payment($op, &$order, $form = NULL, &$form_state = NUL
       unset($form_state['input']['panes']['payment']['payment_method']);
 
       $options = array();
-      foreach (_uc_payment_method_list() as $id => $method) {
+      foreach (uc_payment_method_list() as $id => $method) {
         // $set = rules_config_load('uc_payment_method_' . $method['id']);
         // if ($set && !$set->execute($order)) {
         //   continue;
diff --git a/payment/uc_payment/uc_payment_order_pane.inc b/payment/uc_payment/uc_payment_order_pane.inc
index e03e989..f59bed2 100644
--- a/payment/uc_payment/uc_payment_order_pane.inc
+++ b/payment/uc_payment/uc_payment_order_pane.inc
@@ -59,17 +59,11 @@ function uc_order_pane_payment($op, $order, &$form = NULL, &$form_state = NULL)
       return $build;
 
     case 'edit-form':
-      $methods = _uc_payment_method_list();
-      $options = array();
-      foreach ($methods as $id => $method) {
-        $options[$id] = $method['name'];
-      }
       $form['payment']['payment_method'] = array(
         '#type' => 'select',
         '#title' => t('Payment method'),
         '#default_value' => $order->getPaymentMethodId(),
-        '#options' => !empty($options) ? $options : array(t('None available')),
-        '#disabled' => empty($options),
+        '#options' => \Drupal::service('plugin.manager.uc_payment.method')->listOptions(),
         '#ajax' => array(
           'callback' => 'uc_payment_order_pane_ajax_callback',
           'progress' => array('type' => 'throbber'),
