diff --git a/commerce_wishlist.info b/commerce_wishlist.info
index cb04875..0320b18 100644
--- a/commerce_wishlist.info
+++ b/commerce_wishlist.info
@@ -10,6 +10,14 @@ core = 7.x
 files[] = commerce_wishlist.module
 
 ; Views handlers files
+files[] = includes/views/handlers/commerce_wishlist_handler_field_wishlist_link_delete.inc
 files[] = includes/views/handlers/commerce_wishlist_handler_field_product_link_delete.inc
 
 project = "commerce_wishlist"
+
+; Information added by drupal.org packaging script on 2013-10-25
+version = "7.x-1.0-alpha2"
+core = "7.x"
+project = "commerce_wishlist"
+datestamp = "1382685926"
+
diff --git a/commerce_wishlist.install b/commerce_wishlist.install
index ff8272d..da84df3 100644
--- a/commerce_wishlist.install
+++ b/commerce_wishlist.install
@@ -9,14 +9,14 @@ function commerce_wishlist_schema() {
   $schema['commerce_wishlist'] = array(
     'description' => 'The base table for commerce wishlist.',
     'fields' => array(
-      'wishlist_id' => array(
-        'description' => 'The primary identifier for a wishlist.',
+      'id' => array(
+        'description' => 'The primary identifier for a wishlist item.',
         'type' => 'serial',
         'unsigned' => TRUE,
         'not null' => TRUE,
       ),
-      'uid' => array(
-        'description' => 'User identifier.',
+      'wishlist_id' => array(
+        'description' => 'The primary identifier for a wishlist.',
         'type' => 'int',
         'unsigned' => TRUE,
         'not null' => TRUE,
@@ -42,12 +42,11 @@ function commerce_wishlist_schema() {
         'scale' => 2,
       ),
     ),
-    'primary key' => array('wishlist_id'),
-    'unique keys' => array('unique' => array('uid', 'nid', 'product_id')),
+    'primary key' => array('id'),
     'foreign keys' => array(
-      'owner' => array(
-        'table' => 'users',
-        'columns' => array('uid' => 'uid'),
+      'wishlist' => array(
+        'table' => 'commerce_wishlists',
+        'columns' => array('wishlist_id' => 'wishlist_id'),
       ),
       'product_display' => array(
         'table' => 'node',
@@ -60,11 +59,48 @@ function commerce_wishlist_schema() {
     ),
   );
 
+$schema['commerce_wishlists'] = array(
+    'description' => 'The base table for commerce wishlist.',
+    'fields' => array(
+      'wishlist_id' => array(
+        'description' => 'The primary identifier for a wishlist item.',
+        'type' => 'serial',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'uid' => array(
+        'description' => 'User identifier.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => FALSE,
+      ),
+      'name' => array(
+        'description' => 'Wishlist name',
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => ''
+      )
+    ),
+    'primary key' => array('wishlist_id'),
+    'unique keys' => array('unique' => array('wishlist_id')),
+    'foreign keys' => array(
+      'wishlist' => array(
+        'table' => 'commerce_wishlist',
+        'columns' => array('wishlist_id' => 'wishlist_id'),
+      ),
+      'uid' => array(
+        'table' => 'users',
+        'columns' => array('uid' => 'uid'),
+      ),
+    ),
+  );
+
   return $schema;
 }
 
 /**
- * 
+ *
  */
 function commerce_wishlist_update_7001(&$sandbox) {
   // Change NID Collumn
@@ -75,6 +111,76 @@ function commerce_wishlist_update_7001(&$sandbox) {
 }
 
 /**
+ * Change wishlist_id to id and add wishlist_id and remove uid and a new commerce_wishlists table.
+ */
+function commerce_wishlist_update_7002(&$sandbox) {
+  // Rename wishlist_id to id
+  db_add_index('commerce_wishlist', 'temp', array('wishlist_id'));
+  db_drop_primary_key('commerce_wishlist');
+  db_change_field('commerce_wishlist', 'wishlist_id', 'id', array(
+      'type' => 'serial',
+      'unsigned' => TRUE,
+      'not null' => TRUE
+    ), array(
+      'primary key' => array('id')
+    )
+  );
+  db_drop_index('commerce_wishlist', 'temp');
+
+  // Remove uid
+  db_drop_field('commerce_wishlist', 'uid');
+
+  // Create new column wishlist_id
+  db_add_field('commerce_wishlist', 'wishlist_id', array(
+      'type' => 'int',
+      'not null' => TRUE,
+      'unsigned' => TRUE
+    )
+  );
+
+  // New table schema
+  $schema = array();
+  $schema['commerce_wishlists'] = array(
+    'description' => 'The base table for commerce wishlists.',
+    'fields' => array(
+      'wishlist_id' => array(
+        'description' => 'The primary identifier for a wishlist.',
+        'type' => 'serial',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'uid' => array(
+        'description' => 'User identifier.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'name' => array(
+        'description' => 'Wishlist name',
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => ''
+      )
+    ),
+    'primary key' => array('wishlist_id'),
+    'foreign keys' => array(
+      'owner' => array(
+        'table' => 'users',
+        'columns' => array('uid' => 'uid'),
+      ),
+      'wishlist' => array(
+        'table' => 'commerce_wishlist',
+        'columns' => array('wishlist_id' => 'wishlist_id'),
+      ),
+    ),
+  );
+
+  // Create new table for wishlists
+  db_create_table('commerce_wishlists', $schema['commerce_wishlists']);
+}
+
+/**
  * Implements hook_uninstall().
  */
 function commerce_wishlist_uninstall() {
@@ -83,4 +189,8 @@ function commerce_wishlist_uninstall() {
   variable_del('commerce_wishlist_remove_product');
   variable_del('commerce_wishlist_product_types');
   variable_del('commerce_wishlist_weight');
+
+  // Delete tables
+  db_drop_table('commerce_wishlist');
+  db_drop_table('commerce_wishlists');
 }
diff --git a/commerce_wishlist.module b/commerce_wishlist.module
index 3c2dba4..cb93a43 100644
--- a/commerce_wishlist.module
+++ b/commerce_wishlist.module
@@ -11,11 +11,26 @@
 function commerce_wishlist_menu() {
   $items = array();
 
-  $items['user/%user/wishlist/delete/%'] = array(
+  $items['user/%user/wishlist/%/delete'] = array(
     'page callback' => 'commerce_wishlist_delete',
-    'page arguments' => array(1, 4),
+    'page arguments' => array(1, 3),
     'access callback' => 'commerce_wishlist_access',
-    'access arguments' => array(1, 4),
+    'access arguments' => array(1, 3),
+    'type' => MENU_CALLBACK,
+  );
+
+  $items['user/%user/wishlist/create'] = array(
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('commerce_wishlist_create_form'),
+    'access arguments' => array('manage own wishlist'),
+    'file' => 'commerce_wishlist.user.inc',
+  );
+
+  $items['user/%user/wishlist/%/delete/%'] = array(
+    'page callback' => 'commerce_wishlist_product_delete',
+    'page arguments' => array(1, 3, 5),
+    'access callback' => 'commerce_wishlist_access',
+    'access arguments' => array(1, 3, 5),
     'type' => MENU_CALLBACK,
   );
 
@@ -30,7 +45,7 @@ function commerce_wishlist_menu() {
 
   $items['wishlist-actions'] = array(
     'page callback' => 'commerce_wishlist_operations',
-    'access arguments' => array('view own wishlist'),
+    'access arguments' => array('manage own wishlist'),
     'type' => MENU_CALLBACK,
   );
 
@@ -52,9 +67,9 @@ function commerce_wishlist_views_api() {
  */
 function commerce_wishlist_permission() {
   return array(
-    'view own wishlist' => array(
-      'title' => t('View own wishlist'),
-      'description' => t('Allows a user to see their own wishlist.'),
+    'manage own wishlist' => array(
+      'title' => t('Manage own wishlist'),
+      'description' => t('Allows a user to delete their own wishlists.'),
     ),
     'administer wishlists' => array(
       'title' => t('Administer wishlist'),
@@ -64,25 +79,9 @@ function commerce_wishlist_permission() {
 }
 
 /**
- * Implements hook_commerce_cart_product_add().
- */
-function commerce_wishlist_commerce_cart_product_add($order, $product, $quantity, $line_item) {
-  // When add product to cart delete product from wishlist if the configuration
-  // is set to do so.
-  if (variable_get('commerce_wishlist_remove_product', 1)) {
-    db_delete('commerce_wishlist')
-      ->condition(db_and()
-          ->condition('uid', $order->uid)
-          ->condition('product_id', $product->product_id)
-      )
-      ->execute();
-  }
-}
-
-/**
  * Determine whether the user has a given privilege to wishlist.
  */
-function commerce_wishlist_access($user, $wishlist_id = '') {
+function commerce_wishlist_access($user, $wishlist_id = '', $product_id = '') {
   if (user_access('administer wishlists')) return TRUE;
 
   if (isset($wishlist_id)) {
@@ -94,7 +93,7 @@ function commerce_wishlist_access($user, $wishlist_id = '') {
       ->fetchAssoc();
   }
 
-  if ($result['uid'] == $user->uid && user_access('view own wishlist')) return TRUE;
+  if ($result['uid'] == $user->uid && user_access('manage own wishlist')) return TRUE;
 
   return FALSE;
 }
@@ -246,35 +245,56 @@ function commerce_wishlist_add_form_validate($form, &$form_state) {
 /**
  * Submit callback for commerce_cart_add_to_cart_form().
  *
- * Override of commerce_cart_add_to_cart_form_sumbit to add wishlist adicional function
+ * Override of commerce_cart_add_to_cart_form_sumbit to add wishlist additional function
  */
 function commerce_wishlist_add_form_submit($form, &$form_state) {
   global $user;
 
   if ($form_state['values']['op'] == t('Add to Wishlist')) {
-    $fields = array('uid' => $user->uid, 'product_id' => $form_state['values']['product_id'], 'quantity' => $form_state['values']['quantity']);
+    $fields = array('product_id' => $form_state['values']['product_id'], 'quantity' => $form_state['values']['quantity']);
     $fields['nid'] = _commerce_wishlist_get_context_entity_id($form_state['build_info']['args'][2]);
 
     commerce_wishlist_add_product($fields);
 
     $title = (isset($form_state['build_info']['args'][2]['entity']->title)) ? $form_state['build_info']['args'][2]['entity']->title : $form_state['build_info']['args'][0]->line_item_label;
 
-    drupal_set_message(t('%title added to <a href="!url">your wishlist</a>.', array('%title' => $title, '!url' => url('user/'. $user->uid .'/wishlist'))));
+    $wishlist = _commerce_wishlist_default($user->uid);
+
+    drupal_set_message(t('%title added to <a href="!url">your wishlist</a>.', array('%title' => $title, '!url' => url('user/'. $user->uid .'/wishlist/' . $wishlist))));
   } else {
     commerce_cart_add_to_cart_form_submit($form, $form_state);
   }
 }
 
 /**
- * Access callback: Delete the wishlist product
+ * Access callback: Delete the wishlist
  */
 function commerce_wishlist_delete($user, $wishlist_id) {
+  // Delete all products associated with the wishlist
+  db_delete('commerce_wishlist')
+    ->condition('wishlist_id', $wishlist_id)
+    ->execute();
+
+  // Delete the wishlist
+  db_delete('commerce_wishlists')
+    ->condition('wishlist_id', $wishlist_id)
+    ->execute();
+
+  drupal_set_message(t('The wishlist was deleted.'));
+  drupal_goto('/wishlist/');
+}
+
+/**
+ * Access callback: Delete the wishlist product
+ */
+function commerce_wishlist_product_delete($user, $wishlist_id, $product_id) {
   db_delete('commerce_wishlist')
     ->condition('wishlist_id', $wishlist_id)
+    ->condition('id', $product_id)
     ->execute();
 
   drupal_set_message(t('The product has been deleted from your wishlist.'));
-  drupal_goto('user/'. $user->uid .'/wishlist');
+  drupal_goto('/wishlist/' . $wishlist_id);
 }
 
 /**
@@ -290,12 +310,14 @@ function commerce_wishlist_in_wishlist($uid, $product_id, $nid = NULL) {
     $conditions->condition('nid', $nid);
   }
 
-  $result = db_select('commerce_wishlist', 'cw')
+  $query = db_select('commerce_wishlists', 'cws');
+  $query->join('commerce_wishlist', 'cw', 'cw.wishlist_id = cws.wishlist_id');
+  $query
     ->addTag('wishlist')
     ->fields('cw', array('wishlist_id'))
-    ->condition($conditions)
-    ->execute()
-    ->fetchAssoc();
+    ->condition($conditions);
+  $result = $query->execute();
+  $result = $result->fetchAssoc();
 
   return isset ($result['wishlist_id']);
 }
@@ -314,7 +336,7 @@ function commerce_wishlist_operations() {
         if (commerce_wishlist_in_wishlist($args[2], $args[3], $args[4])) {
           return;
         }
-        $fields = array('uid' => $args[2], 'product_id' => $args[3], 'nid' => $args[4], 'quantity' => 1);
+        $fields = array('product_id' => $args[3], 'nid' => $args[4], 'quantity' => 1);
         commerce_wishlist_add_product($fields);
         break;
     }
@@ -334,12 +356,55 @@ function commerce_wishlist_operations() {
       drupal_goto($destination);
     }
   }
+
+  if (isset($args[0]) && isset($args[1]) && $args[1] == "add_to_cart") {
+    commerce_wishlist_add_products($args[0]);
+  }
+}
+
+/**
+ * Adds products in wishlist to users cart
+ */
+function commerce_wishlist_add_products($wishlist_id) {
+  global $user;
+
+  // Load wishlist products
+  $query = db_select('commerce_wishlists', 'cws');
+  $query->join('commerce_wishlist', 'cw', 'cws.wishlist_id = cw.wishlist_id');
+  $query
+    ->fields('cw', array('product_id'))
+    ->condition('cws.wishlist_id', $wishlist_id);
+  $products = $query->execute();
+  $products = $products->fetchAssoc();
+
+  if (!empty($products)) {
+    foreach($products as $product) {
+      $item = commerce_product_load($product);
+      $line = commerce_product_line_item_new($item);
+      commerce_cart_product_add($user->uid, $line, $combine = TRUE);
+
+      drupal_goto('cart');
+    }
+  } else {
+    drupal_goto('wishlist/');
+  }
 }
 
 /**
  * Adds product to wishlist
  */
 function commerce_wishlist_add_product($fields) {
+  global $user;
+  $wishlist = _commerce_wishlist_default($user->uid);
+
+  if ($wishlist) {
+    // Add to existing wishlist
+    $fields["wishlist_id"] = $wishlist;
+  } else {
+    // Create new wishlist
+    $fields["wishlist_id"] = _commerce_new_wishlist($user->uid);
+  }
+
   return db_insert('commerce_wishlist')
     ->fields($fields)
     ->execute();
@@ -349,8 +414,46 @@ function commerce_wishlist_add_product($fields) {
  * Returns html of "Already in wishlist" link. TODO: themeable?
  */
 function _commerce_wishlist_link($uid) {
+  $wishlist = _commerce_wishlist_default($uid);
+
   return t('Already in <a class="in-wishlist" target="_blank" href="@url">wishlist</a>', array(
-    '@url' => url('user/' . $uid . '/wishlist')));
+    '@url' => url('user/' . $uid . '/wishlist/' . $wishlist)));
+}
+
+/**
+ * Returns the users latest wishlist.
+ */
+function _commerce_wishlist_default($uid) {
+  $conditions = db_and();
+  $conditions->condition('uid', $uid);
+
+  $result = db_select('commerce_wishlists', 'cw')
+    ->fields('cw', array('wishlist_id'))
+    ->condition($conditions)
+    ->orderBy('wishlist_id', 'DESC')
+    ->range(0,1)
+    ->execute()
+    ->fetchAssoc();
+
+  if ($result) {
+    return $result["wishlist_id"];
+  } else {
+    return false;
+  }
+}
+
+/**
+ * Create a new wishlist.
+ */
+function _commerce_new_wishlist($uid) {
+  return db_insert('commerce_wishlists')
+    ->fields(
+      array(
+        'uid' => $uid,
+        'name' => 'Wishlist'
+      )
+    )
+    ->execute();
 }
 
 /**
@@ -363,7 +466,7 @@ function _commerce_wishlist_link($uid) {
  */
 function _commerce_wishlist_get_context_entity_id($context) {
   // TODO: What if it's not a node?
-  if (isset($context['entity_type']) && $context['entity_type'] == 'node') {
+  if ($context['entity_type'] == 'node') {
     if (isset($context['entity'])) {
       return $context['entity']->nid;
     }
diff --git a/commerce_wishlist.user.inc b/commerce_wishlist.user.inc
index e69de29..42fd254 100644
--- a/commerce_wishlist.user.inc
+++ b/commerce_wishlist.user.inc
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @file
+ * Allows users to create wishlists with custom names.
+ */
+
+function commerce_wishlist_create_form($form, &$form_state) {
+
+  $form['wishlist_name'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Wishlist Name'),
+    '#description' => t('Set the name of the wishlist'),
+    '#default_value' => t('My Wishlist'),
+    '#required' => TRUE
+  );
+
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Create Wishlist')
+  );
+
+  return $form;
+}
+
+function commerce_wishlist_create_form_submit($form, &$form_state) {
+  global $user;
+  if (!empty($form_state['values']['wishlist_name'])) {
+    return db_insert('commerce_wishlists')
+      ->fields(
+        array(
+          'uid' => $user->uid,
+          'name' => $form_state['values']['wishlist_name']
+        )
+      )
+    ->execute();
+
+    drupal_set_message(t('Successfully created new wishlist - ') . $form_state['values']['wishlist_name']);
+  } else {
+    drupal_set_message(t('Error creating wishlist please try again.'), 'error');
+  }
+}
\ No newline at end of file
diff --git a/includes/views/commerce_wishlist.views.inc b/includes/views/commerce_wishlist.views.inc
index 6cfa303..e95fd30 100644
--- a/includes/views/commerce_wishlist.views.inc
+++ b/includes/views/commerce_wishlist.views.inc
@@ -10,9 +10,9 @@
 function commerce_wishlist_views_data() {
   $data = array();
 
-  $data['commerce_wishlist']['table']['group']  = t('Commerce Wishlist');
+  $data['commerce_wishlists']['table']['group']  = t('Commerce Wishlist');
 
-  $data['commerce_wishlist']['table']['base'] = array(
+  $data['commerce_wishlists']['table']['base'] = array(
     'field' => 'wishlist_id',
     'title' => t('Commerce Wishlist'),
     'help' => t('TODO:'),
@@ -20,12 +20,19 @@ function commerce_wishlist_views_data() {
     'access query tag' => 'commerce_product_access',
   );
 
-  // Expose the product ID.
-  $data['commerce_wishlist']['product_id'] = array(
-    'title' => t('Product ID'),
-    'help' => t('The unique internal identifier of the product.'),
+  $data['commerce_wishlists']['table']['join'] = array(
+    'commerce_wishlist' => array(
+      'left_field' => 'wishlist_id',
+      'field' => 'wishlist_id'
+    )
+  );
+
+  // Expose the wishlist id.
+  $data['commerce_wishlists']['wishlist_id'] = array(
+    'title' => t('Wishlist ID'),
+    'help' => t("The wishlist ID."),
     'field' => array(
-      'handler' => 'commerce_product_handler_field_product',
+      'handler' => 'views_handler_field_numeric',
       'click sortable' => TRUE,
     ),
     'filter' => array(
@@ -34,37 +41,22 @@ function commerce_wishlist_views_data() {
     'sort' => array(
       'handler' => 'views_handler_sort',
     ),
-    'relationship' => array(
-      'title' => t('Product'),
-      'help' => t("Relate this wishlist to its owner's user account"),
-      'handler' => 'views_handler_relationship',
-      'base' => 'commerce_product',
-      'base field' => 'product_id',
-      'field' => 'product_id',
-      'label' => t('Wishlist product display'),
-    ),
-  );
-
-  // Expose the product type.
-  $data['commerce_wishlist']['nid'] = array(
-    'title' => t('Nid'),
-    'help' => t('The human-readable name of the type of the product.'),
-    'sort' => array(
-      'handler' => 'views_handler_sort',
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
     ),
     'relationship' => array(
-      'title' => t('Product display (node)'),
-      'help' => t("Relate this wishlist to its owner's user account"),
+      'title' => t('Wishlist'),
+      'help' => t("Relate this wishlist to its contents"),
       'handler' => 'views_handler_relationship',
-      'base' => 'node',
-      'base field' => 'nid',
-      'field' => 'nid',
-      'label' => t('Wishlist product display'),
+      'base' => 'commerce_wishlist',
+      'base field' => 'wishlist_id',
+      'field' => 'wishlist_id',
+      'label' => t('Wishlist contents'),
     ),
   );
 
   // Expose the creator uid.
-  $data['commerce_wishlist']['uid'] = array(
+  $data['commerce_wishlists']['uid'] = array(
     'title' => t('Uid'),
     'help' => t("The owner's user ID."),
     'field' => array(
@@ -93,8 +85,79 @@ function commerce_wishlist_views_data() {
     ),
   );
 
+  // Expose the wishlist name.
+  $data['commerce_wishlists']['name'] = array(
+    'title' => t('Wishlist Name'),
+    'help' => t('Wishlist name'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    )
+  );
+
+  $data['commerce_wishlist']['table']['group']  = t('Commerce Wishlist');
+
+  $data['commerce_wishlist']['table']['join'] = array(
+    'commerce_wishlists' => array(
+      'left_field' => 'wishlist_id',
+      'field' => 'wishlist_id'
+    )
+  );
+
+  // Expose the product ID.
+  $data['commerce_wishlist']['product_id'] = array(
+    'title' => t('Product ID'),
+    'help' => t('The unique internal identifier of the product.'),
+    'field' => array(
+      'handler' => 'commerce_product_handler_field_product',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'relationship' => array(
+      'title' => t('Product'),
+      'help' => t("Relate this product to the product entity."),
+      'handler' => 'views_handler_relationship',
+      'base' => 'commerce_product',
+      'base field' => 'product_id',
+      'field' => 'product_id',
+      'label' => t('Wishlist product display'),
+    ),
+  );
+
+  // Expose the product type.
+  $data['commerce_wishlist']['nid'] = array(
+    'title' => t('Nid'),
+    'help' => t('The human-readable name of the type of the product.'),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'relationship' => array(
+      'title' => t('Product display (node)'),
+      'help' => t("Relate this product to the display node."),
+      'handler' => 'views_handler_relationship',
+      'base' => 'node',
+      'base field' => 'nid',
+      'field' => 'nid',
+      'label' => t('Wishlist product display'),
+    ),
+  );
+
   // Expose links to operate on the product.
-  $data['commerce_wishlist']['delete_wishlist'] = array(
+  $data['commerce_wishlist']['delete_wishlist_product'] = array(
     'field' => array(
       'title' => t('Delete'),
       'help' => t('Provide a simple link to delete the product from the wishlist.'),
@@ -102,6 +165,22 @@ function commerce_wishlist_views_data() {
     ),
   );
 
+  $data['commerce_wishlists']['delete_wishlist'] = array(
+    'field' => array(
+      'title' => t('Delete'),
+      'help' => t('Provide a simple link to delete the wishlist.'),
+      'handler' => 'commerce_wishlist_handler_field_wishlist_link_delete',
+    ),
+  );
+
+  $data['commerce_wishlists']['create_wishlist'] = array(
+    'field' => array(
+      'title' => t('Create'),
+      'help' => t('Provide a simple link to create a new wishlist.'),
+      'handler' => 'commerce_wishlist_handler_field_wishlist_link_create',
+    ),
+  );
+
   return $data;
 }
 
diff --git a/includes/views/handlers/commerce_wishlist_handler_field_product_link_delete.inc b/includes/views/handlers/commerce_wishlist_handler_field_product_link_delete.inc
index 8c9bec4..b7e21ce 100644
--- a/includes/views/handlers/commerce_wishlist_handler_field_product_link_delete.inc
+++ b/includes/views/handlers/commerce_wishlist_handler_field_product_link_delete.inc
@@ -6,8 +6,8 @@
 class commerce_wishlist_handler_field_product_link_delete extends views_handler_field {
   function construct() {
     parent::construct();
-    $this->additional_fields['uid'] = 'uid';
     $this->additional_fields['wishlist_id'] = 'wishlist_id';
+    $this->additional_fields['id'] = 'id';
   }
 
   function option_definition() {
@@ -30,16 +30,20 @@ class commerce_wishlist_handler_field_product_link_delete extends views_handler_
 
   function query() {
     $this->ensure_my_table();
+    $this->query->add_field('commerce_wishlists', 'uid');
     $this->add_additional_fields();
   }
 
   function render($values) {
+    global $user;
     // Ensure the user has access to delete this product.
     $wishlist_id = $this->get_value($values, 'wishlist_id');
-    $uid = $this->get_value($values, 'uid');
+    $id = $this->get_value($values, 'id');
 
     $text = !empty($this->options['text']) ? $this->options['text'] : t('delete');
 
-    return l($text, 'user/'. $uid .'/wishlist/delete/'. $wishlist_id, array('query' => drupal_get_destination()));
+    if (isset($values->commerce_wishlists_uid) && $user->uid == $values->commerce_wishlists_uid) {
+      return l($text, 'user/'. $user->uid .'/wishlist/' . $wishlist_id . '/delete/'. $id, array('query' => drupal_get_destination()));
+    }
   }
 }
diff --git a/includes/views/handlers/commerce_wishlist_handler_field_wishlist_link_delete.inc b/includes/views/handlers/commerce_wishlist_handler_field_wishlist_link_delete.inc
index e69de29..fa62e05 100644
--- a/includes/views/handlers/commerce_wishlist_handler_field_wishlist_link_delete.inc
+++ b/includes/views/handlers/commerce_wishlist_handler_field_wishlist_link_delete.inc
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * Field handler to present a link to delete a product for wishlist.
+ */
+class commerce_wishlist_handler_field_wishlist_link_delete extends views_handler_field {
+  function construct() {
+    parent::construct();
+    $this->additional_fields['uid'] = 'uid';
+    $this->additional_fields['wishlist_id'] = 'wishlist_id';
+  }
+
+  function option_definition() {
+    $options = parent::option_definition();
+
+    $options['text'] = array('default' => '', 'translatable' => TRUE);
+
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+
+    $form['text'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text to display'),
+      '#default_value' => $this->options['text'],
+    );
+  }
+
+  function query() {
+    $this->ensure_my_table();
+    $this->add_additional_fields();
+  }
+
+  function render($values) {
+    // Ensure the user has access to delete this product.
+    $wishlist_id = $this->get_value($values, 'wishlist_id');
+    $uid = $this->get_value($values, 'uid');
+
+    $text = !empty($this->options['text']) ? $this->options['text'] : t('delete');
+
+    return l($text, 'user/'. $uid .'/wishlist/'. $wishlist_id .'/delete/', array('query' => drupal_get_destination()));
+  }
+}
