diff --git a/panels_node/panels_node.module b/panels_node/panels_node.module
index ffd2693..56f0029 100644
--- a/panels_node/panels_node.module
+++ b/panels_node/panels_node.module
@@ -36,6 +36,14 @@ function panels_node_menu() {
     'type' => MENU_LOCAL_TASK,
   );
 
+  $items['admin/build/panels/settings/panel-node-upgrade'] = array(
+    'title' => 'Upgrade from Panel nodes to Panelizer',
+    'access arguments' => array('administer panel-nodes'),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('panels_node_upgrade_form'),
+    'type' => MENU_LOCAL_TASK,
+  );
+
   // Avoid some repetition on these:
   $base = array(
     'access callback' => 'panels_node_edit_node',
@@ -66,6 +74,42 @@ function panels_node_menu() {
   return $items;
 }
 
+function panels_node_upgrade_form() {
+  $form = array();
+
+  return confirm_form($form, 'Do you really want to upgrade your panel nodes to use panelizer instead, and have you taken a database backup?', 'admin/build/panels/settings/panel-node-upgrade');
+}
+
+function panels_node_upgrade_form_validate($form, &$form_state) {
+  if (! module_exists('panelizer')) {
+    form_set_error('none', 'Panelizer is not enabled. Upgrade will not continue.');
+  }
+}
+
+function panels_node_upgrade_form_submit() {
+  db_query('UPDATE node_type SET module = "node" where module = "panels_node"');
+  db_query('INSERT INTO panelizer_node (nid, css_id, did, pipeline) SELECT nid, css_id, did, pipeline FROM panels_node');
+
+  $ret = '';
+  db_drop_table($ret, 'panels_node');
+  $panelizer_settings = (variable_get('panelizer_defaults', array()));
+  $panelizer_settings['node']['panel'] = array(
+    'status' => 1,
+    'choice' => FALSE,
+  );
+  variable_set('panelizer_defaults', $panelizer_settings);
+
+  $output = 'Your panel nodes have been upgraded to use Panelizer';
+  if ($ret['success']) {
+    $output .= 'The panels_node table has been succesfully dropped.';
+  }
+  else  {
+    $output .= 'The panels_node table could not be dropped.';
+  }
+
+  return $output;
+}
+
 function panels_node_edit_node($node) {
   if (!isset($node->panels_node)) {
     return FALSE;
