diff --git a/nodeblock.install b/nodeblock.install
new file mode 100644
index 0000000..31b21a3
--- /dev/null
+++ b/nodeblock.install
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * Implements hook_install()
+ **/
+function nodeblock_install() {
+  return 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() {
+  $ret = array();
+  
+  // 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.',
+  );
+
+  db_change_field($ret, 'blocks', 'delta', 'delta', $spec);
+
+  // Update the {block_roles} 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.",
+  );
+
+  db_change_field($ret, 'blocks_roles', 'delta', 'delta', $spec);
+  
+  return $ret;
+}
\ No newline at end of file
diff --git a/nodeblock.module b/nodeblock.module
index c5ffb4b..c0ae93e 100644
--- a/nodeblock.module
+++ b/nodeblock.module
@@ -92,7 +92,14 @@ function nodeblock_block($op = 'list', $delta = 0, $edit = array()) {
         // Fetch all nodes of this type, excluding translations.
         $result = db_query("SELECT nid, title FROM {node} WHERE type = '%s' AND status = 1 AND (nid = tnid OR tnid = 0)", $type->type);
         while ($node = db_fetch_object($result)) {
-          $blocks[$node->nid] = array('info' => $node->title .' (nodeblock)');
+          $nid = $node->nid;
+          
+          if(module_exists("uuid")) {
+            $uuid = uuid_nodeapi($node, 'load', false, false);
+            $nid = $uuid["uuid"];
+          }
+          
+          $blocks[$nid] = array('info' => $node->title .' (nodeblock)');
         }
       }
     }
@@ -116,7 +123,8 @@ function nodeblock_block($op = 'list', $delta = 0, $edit = array()) {
     variable_set('nodeblock_block_' . $delta, array('teaser' => $edit['teaser'], 'links' => $edit['links']));
   }
   elseif ($op == 'view') {
-    $node = node_load($delta);
+    $node = _nodeblock_delta_to_node($delta);
+
     if (!node_access('view', $node)) {
       return;
     }
@@ -207,3 +215,27 @@ function nodeblock_preprocess_node(&$variables) {
 function nodeblock_theme_registry_alter(&$registry) {
   array_unshift($registry['node']['theme paths'], drupal_get_path('module', 'nodeblock'));
 }
+
+
+/**
+ * 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_node($delta) {
+  $nid = $delta;
+  
+  if (module_exists('uuid') && strlen($delta) == 36) {
+    $node = node_get_by_uuid($nid);
+    
+    if ($node) {
+      return $node;
+    }
+    
+    if (!$node) {
+      watchdog('nodeblock', "Attempted to fetch nodeblock by UUID but could not find a corresponding NID, uuid: %uuid", array('%uuid' => $delta), WATCHDOG_ERROR);
+      return FALSE;
+    }
+  }
+  
+  return node_load($nid);
+}
\ No newline at end of file
