diff --git a/commerce_ajax_basket_link.module b/commerce_ajax_basket_link.module
index 6a84e59..973ecf6 100644
--- a/commerce_ajax_basket_link.module
+++ b/commerce_ajax_basket_link.module
@@ -34,7 +34,10 @@ function commerce_ajax_basket_link_block_view($delta = '') {
   switch ($delta) {
     case 'commerce_ajax_basket_link':
       $block['subject'] = '';
-      $block['content'] = commerce_ajax_basket_link_static_output();
+      $block['content'] = array(
+        '#theme' => 'commerce_ajax_basket_link',
+        '#order_data' => commerce_ajax_basket_link_order_data(),
+      );
       break;
   }

@@ -55,17 +58,46 @@ function commerce_ajax_basket_link_block_info() {
 }

 /**
- * Returns renderable array of basket link static content.
+ * Implements hook_theme().
  */
-function commerce_ajax_basket_link_static_output() {
+function commerce_ajax_basket_link_theme() {
+  return array(
+    'commerce_ajax_basket_link' => array(
+      'variables' => array(
+        'order_data' => NULL,
+      ),
+    ),
+  );
+}

-  $order_data = commerce_ajax_basket_link_order_data();
-  $qty = format_plural($order_data['qty'], '1 item', '@count items');
-  $price = commerce_currency_format($order_data['total']['amount'], $order_data['total']['currency_code']);
+/**
+ * Theme function for basket link static content.
+ */
+function theme_commerce_ajax_basket_link($variables) {
+  if (!isset($variables['order_data'])) {
+    return NULL;
+  }
+  else {
+    $order_data = $variables['order_data'];
+    $qty = format_plural($order_data['qty'], '1 item', '@count items');
+    $price = commerce_currency_format($order_data['total']['amount'], $order_data['total']['currency_code']);
+
+    $markup = '<p>' . l(t('View basket'), 'cart') . ' (' . $qty . ' ' . $price . ')</p>';

+    return $markup;
+  }
+}
+
+/**
+ * Returns renderable array of basket link static content.
+ *
+ * DEPRECATED
+ * Function retained for API compatibility.
+ */
+function commerce_ajax_basket_link_static_output() {
   $output = array(
-    '#type' => 'markup',
-    '#markup' => '<p>' . l(t('View basket'), 'cart') . ' (' . $qty . ' ' . $price . ')</p>',
+    '#theme' => 'commerce_ajax_basket_link',
+    '#order_data' => commerce_ajax_basket_link_order_data(),
   );

   return $output;
@@ -135,8 +167,16 @@ function commerce_ajax_basket_link_ajax_cart_form_add_to_cart_ajax_callback($for
   }

   // Basket item markup into top nav
-  $output = commerce_ajax_basket_link_static_output();
-  $output['#markup'] = '<div class="content clearfix">' . $output['#markup'] . '</div>';
+  $markup = theme(
+    'commerce_ajax_basket_link',
+    array(
+      'order_data' => commerce_ajax_basket_link_order_data(),
+    )
+  );
+
+  $output = array(
+    '#markup' => '<div class="content cleafix">' . $markup . '</div>',
+  );

   // Reset commerce_line_items_quantity
   unset($form['quantity']['#value']);
