diff -urN panels.old/content_types/block.inc panels/content_types/block.inc
--- panels.old/content_types/block.inc  2007-03-09 11:17:47.000000000 +0100
+++ panels/content_types/block.inc      2007-03-09 11:02:56.000000000 +0100
@@ -96,7 +96,7 @@
         '#title' => t('Override title text'),
         '#size' => 15,
       );
-
+      $form = array_merge($form, module_invoke($conf['module'], 'block', 'configure', $conf['delta']));
       return $form;
     case 'validate':
       // This one has nothing to validate.
diff -urN panels.old/panels.module panels/panels.module
--- panels.old/panels.module    2007-03-09 11:17:47.000000000 +0100
+++ panels/panels.module        2007-03-09 11:15:02.000000000 +0100
@@ -661,6 +661,9 @@
     foreach ($info as $position => $block) {
       if (is_numeric($position)) { // don't save some random form stuff that may've been here.
         $block = (object) $block;
+        if ($block->type == 'block') {
+          module_invoke($block->configuration['module'], 'block', 'save', $block->configuration['delta'], $block->configuration);
+        }
         db_query("INSERT INTO {panels_area} (did, area, type, configuration, position) VALUES(%d, '%s', '%s', '%s', %d)", $panels->did, $area, $block->type, serialize($block->configuration), $position);
       }
     }
