diff --git nodequeue.install nodequeue.install
index 7a47e74..12f12b3 100644
--- nodequeue.install
+++ nodequeue.install
@@ -13,8 +13,8 @@ function nodequeue_schema() {
     'fields' => array(
       'qid' => array(
         'description' => 'The primary identifier for a queue.',
-        'type' => 'serial',
-        'unsigned' => TRUE,
+        'type' => 'varchar',
+        'length' => 255,
         'not null' => TRUE
       ),
       'title' => array(
@@ -92,9 +92,8 @@ function nodequeue_schema() {
     'fields' => array(
       'qid' => array(
         'description' => 'Primary key for {nodequeue_queue}',
-        'type' => 'int',
-        'size' => 'big',
-        'unsigned' => TRUE,
+        'type' => 'varchar',
+        'length' => 255,
         'not null' => TRUE
       ),
       'rid' => array(
@@ -115,9 +114,8 @@ function nodequeue_schema() {
     'fields' => array(
       'qid' => array(
         'description' => 'Primary key for {nodequeue_queue}',
-        'type' => 'int',
-        'size' => 'big',
-        'unsigned' => TRUE,
+        'type' => 'varchar',
+        'length' => 255,
         'not null' => TRUE
       ),
       'type' => array(
@@ -148,8 +146,8 @@ function nodequeue_schema() {
       ),
       'qid' => array(
         'description' => 'Queue identifier.',
-        'type' => 'int',
-        'unsigned' => TRUE,
+        'type' => 'varchar',
+        'length' => 255,
         'not null' => TRUE,
       ),
       'reference' => array(
@@ -180,8 +178,8 @@ function nodequeue_schema() {
     'fields' => array(
       'qid' => array(
         'description' => 'Queue id',
-        'type' => 'int',
-        'unsigned' => TRUE,
+        'type' => 'varchar',
+        'length' => 255,
         'not null' => TRUE,
       ),
       'sqid' => array(
@@ -446,6 +444,11 @@ function nodequeue_update_6005() {
   $ret[] = update_sql("UPDATE {system} set name = 'nodequeue_view_per_queue' where name = 'nodequeue_automatic_views_generation'");
   return $ret;
 }
+
+function nodequeue_update_7001() {
+}
+
+
 /**
  * Implements hook_requirements().
  *
diff --git nodequeue.module nodequeue.module
index 62158ec..57704fb 100644
--- nodequeue.module
+++ nodequeue.module
@@ -738,6 +738,18 @@ function nodequeue_edit_queue_form($form, &$form_state, $queue) {
     '#description' => t('Enter the name of the queue'),
   );
 
+  $form['name'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Name'),
+    '#default_value' => isset($queue->qid) ? $queue->qid : '',
+    '#disabled' => isset($queue->qid) ? TRUE : FALSE,
+    '#size' => 50,
+    '#maxlength' => 64,
+    '#description' => t('Enter the machine name of the queue'),
+  );
+
+  // This is a value; as the default nodequeue implementation has just one
+
   // This is a value; as the default nodequeue implementation has just one
   // queue per nodequeue, this field is totally redundant. Plugins can
   // override this.
@@ -1932,7 +1944,9 @@ function nodequeue_save(&$queue) {
   );
   
   if (!isset($queue->qid)) {
-    $queue->qid = db_insert('nodequeue_queue')
+    $queue->qid = isset($queue->name) ? $queue->name : uniqid();
+    $nodequeue_queue_fields['qid'] = $queue->qid;
+    db_insert('nodequeue_queue')
       ->fields($nodequeue_queue_fields)
       ->execute();
     
@@ -3056,3 +3070,4 @@ function theme_nodequeue_subqueue_full_text() {
 function theme_nodequeue_subqueue_count_text($vars) {
   return t('@count in queue', array('@count' => $vars['count']));
 }
+
