diff --git a/nodeblock.install b/nodeblock.install
index 0bebde0..a91c9e8 100755
--- a/nodeblock.install
+++ b/nodeblock.install
@@ -1,5 +1,56 @@
 <?php
 
+/**
+ * Implements hook_install()
+ **/
+function nodeblock_install() {
+  nodeblock_update_block_schema_for_uuid();
+}
+
+/**
+ * Updates the 'delta' columns on each block table allowing 36 character
+ * UUIDs to fit.
+ **/
+function nodeblock_update_block_schema_for_uuid() {
+  // Update the {block} table's delta to 36 characters
+  $spec = array(
+    'type' => 'varchar',
+    'length' => 36,
+    'not null' => TRUE,
+    'default' => '0',
+    'description' => 'Unique ID for block within a module.',
+  );
+  $new_keys = array(
+    'unique keys' => array(
+      'tmd' => array('theme', 'module', 'delta'),
+    )
+  );
+  db_change_field('block', 'delta', 'delta', $spec);
+
+  // Update the {block_role} table's delta to 36 characters
+  $spec = array(
+    'type' => 'varchar',
+    'length' => 36,
+    'not null' => TRUE,
+    'description' => "The block's unique delta within module, from {block}.delta.",
+  );
+  $new_keys = array(
+    'primary key' => array('module', 'delta', 'rid'),
+  );
+  db_change_field('block_role', 'delta', 'delta', $spec);
+
+  // Update the {block_node_type} table's delta to 36 characters
+  $spec = array(
+    'type' => 'varchar',
+    'length' => 36,
+    'not null' => TRUE,
+    'description' => "The block's unique delta within module, from {block}.delta.",
+  );
+  $new_keys = array(
+    'primary key' => array('module', 'delta', 'type'),
+  );
+  db_change_field('block_node_type', 'delta', 'delta', $spec);
+}
 
 /**
  * Placeholder for potential Drupal 6 upgrade path
@@ -45,4 +96,11 @@ function nodeblock_update_7101() {
       }
     }       
   }
-}
\ No newline at end of file
+}
+
+/**
+ * Enable UUID support.
+ **/
+function nodeblock_update_7102() {
+  nodeblock_update_block_schema_for_uuid();
+}
diff --git a/nodeblock.module b/nodeblock.module
index d67a79c..fe88ea8 100755
--- a/nodeblock.module
+++ b/nodeblock.module
@@ -230,23 +230,58 @@ function _nodeblock_insert_update($node) {
 }
 
 /**
+ * If the UUID module is enabled and the delta appears to be a UUID then
+ * translate that UUID to a node nid.
+ **/
+function _nodeblock_delta_to_nid($delta) {
+  if (module_exists('uuid') && strlen($delta) == 36) {
+    module_load_include('inc', 'uuid', 'uuid.entity');
+    $nids = entity_get_id_by_uuid('node', array($delta));
+    file_put_contents('/tmp/_nodeblock_delta_to_nid.txt', var_export(array($delta, $nids), 1), FILE_APPEND);
+    if ($nids && count($nids)) {
+      $nid = current($nids);
+    }
+    else {
+      watchdog('nodeblock', "Attempted to fetch nodeblock by UUID but could not find a corresponding NID, uuid: %uuid", array('%uuid' => $delta), WATCHDOG_ERROR);
+      return FALSE;
+    }
+  }
+  else {
+    $nid = $delta;
+  }
+  return $nid;
+}
+
+/**
  * hook_block_info
  */
 function nodeblock_block_info() {
   $blocks = array();
   $blocks2 = array();
   $types = node_type_get_types();
+  $use_uuid = module_exists('uuid');
   foreach ($types as $type) {
     if (nodeblock_type_enabled($type)) {
       // Fetch all nodes of this type, excluding translations.
+      $fields = array('nid', 'title');
+      if ($use_uuid) {
+        $fields[] = 'uuid';
+      }
       $request = db_select('node', 'n')
-        ->fields('n', array('nid', 'title'))
+        ->fields('n', $fields)
         ->condition('n.type', $type->type)
         ->condition('n.status', 1)
         ->condition(db_or()->where('n.nid = n.tnid')->condition('n.tnid', 0));
       $result = $request->execute();
       foreach ($result as $node) {
-        $blocks[$node->nid] = array('info' => $node->title . ' (nodeblock)');
+        // If the UUID module is enabled then use the nodes UUID for the delta
+        if ($use_uuid) {
+          $delta = $node->uuid;
+        }
+        else {
+          $delta = $node->nid;
+        }
+        $blocks[$delta] = array('info' => $node->title . ' (nodeblock)');
       }
     }
   }
@@ -257,7 +292,7 @@ function nodeblock_block_info() {
  * hook_block_view
  */
 function nodeblock_block_view($delta = '') {
-  $node = node_load($delta);
+  $node = node_load(_nodeblock_delta_to_nid($delta));
   if (!node_access('view', $node)) {
     return;
   }
@@ -305,10 +340,10 @@ function nodeblock_block_view($delta = '') {
  * hook_block_configure
  */
 function nodeblock_block_configure($delta = '') {
-
-  $defaults = nodeblock_block_variable_get($delta);
+  $nid = _nodeblock_delta_to_nid($delta);
+  $defaults = nodeblock_block_variable_get($nid);
   
-  $node = node_load($delta);
+  $node = node_load($nid);
   $entity_info = entity_get_info('node');
   $view_modes = array();
   $view_modes['node_block_default'] = t('Default');
