diff --git a/panopoly_test.features.inc b/panopoly_test.features.inc
index c6c00c1..eb5dd65 100644
--- a/panopoly_test.features.inc
+++ b/panopoly_test.features.inc
@@ -28,10 +28,18 @@ function panopoly_test_views_api($module = NULL, $api = NULL) {
  */
 function panopoly_test_node_info() {
   $items = array(
+    'panopoly_test_landing_page' => array(
+      'name' => t('Test landing page'),
+      'base' => 'node_content',
+      'description' => t('Used for the automated tests for making landing pages.'),
+      'has_title' => '1',
+      'title_label' => t('Title'),
+      'help' => '',
+    ),
     'panopoly_test_page' => array(
       'name' => t('Test Page'),
       'base' => 'node_content',
-      'description' => t('Used for the automated tests.'),
+      'description' => t('Used for the automated tests for making content pages.'),
       'has_title' => '1',
       'title_label' => t('Title'),
       'help' => t('This message appears in the system help region when you create a node.'),
@@ -39,7 +47,7 @@ function panopoly_test_node_info() {
     'panopoly_test_page_simple' => array(
       'name' => t('Test Page (without Panelizer)'),
       'base' => 'node_content',
-      'description' => t('Used for the automated tests. Unlike "Test Page", this content type doesn\'t use Panelizer.'),
+      'description' => t('Used for the automated tests for making simple content pages. Unlike "Test Page", this content type doesn\'t use Panelizer.'),
       'has_title' => '1',
       'title_label' => t('Title'),
       'help' => '',
diff --git a/panopoly_test.features.user_permission.inc b/panopoly_test.features.user_permission.inc
index 45800ce..b34593b 100644
--- a/panopoly_test.features.user_permission.inc
+++ b/panopoly_test.features.user_permission.inc
@@ -10,6 +10,16 @@
 function panopoly_test_user_default_permissions() {
   $permissions = array();
 
+  // Exported permission: 'create panopoly_test_landing_page content'.
+  $permissions['create panopoly_test_landing_page content'] = array(
+    'name' => 'create panopoly_test_landing_page content',
+    'roles' => array(
+      'administrator' => 'administrator',
+      'editor' => 'editor',
+    ),
+    'module' => 'node',
+  );
+
   // Exported permission: 'create panopoly_test_page content'.
   $permissions['create panopoly_test_page content'] = array(
     'name' => 'create panopoly_test_page content',
@@ -20,6 +30,16 @@ function panopoly_test_user_default_permissions() {
     'module' => 'node',
   );
 
+  // Exported permission: 'delete any panopoly_test_landing_page content'.
+  $permissions['delete any panopoly_test_landing_page content'] = array(
+    'name' => 'delete any panopoly_test_landing_page content',
+    'roles' => array(
+      'administrator' => 'administrator',
+      'editor' => 'editor',
+    ),
+    'module' => 'node',
+  );
+
   // Exported permission: 'delete any panopoly_test_page content'.
   $permissions['delete any panopoly_test_page content'] = array(
     'name' => 'delete any panopoly_test_page content',
@@ -30,6 +50,16 @@ function panopoly_test_user_default_permissions() {
     'module' => 'node',
   );
 
+  // Exported permission: 'delete own panopoly_test_landing_page content'.
+  $permissions['delete own panopoly_test_landing_page content'] = array(
+    'name' => 'delete own panopoly_test_landing_page content',
+    'roles' => array(
+      'administrator' => 'administrator',
+      'editor' => 'editor',
+    ),
+    'module' => 'node',
+  );
+
   // Exported permission: 'delete own panopoly_test_page content'.
   $permissions['delete own panopoly_test_page content'] = array(
     'name' => 'delete own panopoly_test_page content',
@@ -40,6 +70,16 @@ function panopoly_test_user_default_permissions() {
     'module' => 'node',
   );
 
+  // Exported permission: 'edit any panopoly_test_landing_page content'.
+  $permissions['edit any panopoly_test_landing_page content'] = array(
+    'name' => 'edit any panopoly_test_landing_page content',
+    'roles' => array(
+      'administrator' => 'administrator',
+      'editor' => 'editor',
+    ),
+    'module' => 'node',
+  );
+
   // Exported permission: 'edit any panopoly_test_page content'.
   $permissions['edit any panopoly_test_page content'] = array(
     'name' => 'edit any panopoly_test_page content',
@@ -50,5 +90,15 @@ function panopoly_test_user_default_permissions() {
     'module' => 'node',
   );
 
+  // Exported permission: 'edit own panopoly_test_landing_page content'.
+  $permissions['edit own panopoly_test_landing_page content'] = array(
+    'name' => 'edit own panopoly_test_landing_page content',
+    'roles' => array(
+      'administrator' => 'administrator',
+      'editor' => 'editor',
+    ),
+    'module' => 'node',
+  );
+
   return $permissions;
 }
diff --git a/panopoly_test.info b/panopoly_test.info
index 9ee25a8..ba99f47 100644
--- a/panopoly_test.info
+++ b/panopoly_test.info
@@ -8,6 +8,7 @@ dependencies[] = entity
 dependencies[] = features
 dependencies[] = image
 dependencies[] = list
+dependencies[] = node
 dependencies[] = options
 dependencies[] = panopoly_core
 dependencies[] = strongarm
@@ -24,31 +25,51 @@ features[field_instance][] = node-panopoly_test_page-field_featured_categories
 features[field_instance][] = node-panopoly_test_page-field_featured_image
 features[field_instance][] = node-panopoly_test_page-field_featured_status
 features[field_instance][] = node-panopoly_test_page_simple-body
+features[node][] = panopoly_test_landing_page
 features[node][] = panopoly_test_page
 features[node][] = panopoly_test_page_simple
+features[panelizer_defaults][] = node:panopoly_test_landing_page:default
 features[panelizer_defaults][] = node:panopoly_test_page:default
 features[panelizer_defaults][] = node:panopoly_test_page:default:default
 features[panelizer_defaults][] = node:panopoly_test_page:default:featured
 features[panelizer_defaults][] = node:panopoly_test_page:default:teaser
+features[user_permission][] = create panopoly_test_landing_page content
 features[user_permission][] = create panopoly_test_page content
+features[user_permission][] = delete any panopoly_test_landing_page content
 features[user_permission][] = delete any panopoly_test_page content
+features[user_permission][] = delete own panopoly_test_landing_page content
 features[user_permission][] = delete own panopoly_test_page content
+features[user_permission][] = edit any panopoly_test_landing_page content
 features[user_permission][] = edit any panopoly_test_page content
+features[user_permission][] = edit own panopoly_test_landing_page content
+features[variable][] = date_popup_authored_enabled_panopoly_test_landing_page
+features[variable][] = date_popup_authored_format_panopoly_test_landing_page
+features[variable][] = date_popup_authored_year_range_panopoly_test_landing_page
 features[variable][] = field_bundle_settings_node__panopoly_test_page
 features[variable][] = field_bundle_settings_node__panopoly_test_page_simple
+features[variable][] = menu_options_panopoly_test_landing_page
 features[variable][] = menu_options_panopoly_test_page
 features[variable][] = menu_options_panopoly_test_page_simple
+features[variable][] = menu_parent_panopoly_test_landing_page
 features[variable][] = menu_parent_panopoly_test_page
 features[variable][] = menu_parent_panopoly_test_page_simple
+features[variable][] = node_options_panopoly_test_landing_page
 features[variable][] = node_options_panopoly_test_page
 features[variable][] = node_options_panopoly_test_page_simple
+features[variable][] = node_preview_panopoly_test_landing_page
 features[variable][] = node_preview_panopoly_test_page
 features[variable][] = node_preview_panopoly_test_page_simple
+features[variable][] = node_submitted_panopoly_test_landing_page
 features[variable][] = node_submitted_panopoly_test_page
 features[variable][] = node_submitted_panopoly_test_page_simple
+features[variable][] = panelizer_defaults_node_panopoly_test_landing_page
 features[variable][] = panelizer_defaults_node_panopoly_test_page
+features[variable][] = panelizer_node:panopoly_test_landing_page_allowed_layouts
+features[variable][] = panelizer_node:panopoly_test_landing_page_allowed_layouts_default
+features[variable][] = panelizer_node:panopoly_test_landing_page_allowed_types_default
+features[variable][] = panelizer_node:panopoly_test_landing_page_default
 features[variable][] = panelizer_node:panopoly_test_page:page_manager_selection
 features[views_view][] = panopoly_test_magic_view_modes
-features_exclude[dependencies][panelizer] = panelizer
 features_exclude[dependencies][panopoly_pages] = panopoly_pages
+features_exclude[dependencies][panelizer] = panelizer
 hidden = 1
diff --git a/panopoly_test.module b/panopoly_test.module
index 67b2f3d..460fc97 100644
--- a/panopoly_test.module
+++ b/panopoly_test.module
@@ -12,3 +12,45 @@ include_once 'panopoly_test.features.inc';
 function panopoly_test_ctools_plugin_directory($module, $plugin) {
   return 'plugins/' . $plugin;
 }
+
+/**
+ * Implements hook_module_implements_alter().
+ */
+function panopoly_test_module_implements_alter(&$implementations, $hook) {
+  // Move our hooks to the end so they are executed last.
+  if ($hook == 'form_alter' && isset($implementations['panopoly_test'])) {
+    $group = $implementations['panopoly_test'];
+    unset($implementations['panopoly_test']);
+    $implementations['panopoly_test'] = $group;
+  }
+}
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * Modify the Panelizer's additions to the IPE buttons to make them make sense
+ * for landing pages.
+ */
+function panopoly_test_form_panels_ipe_edit_control_form_alter(&$form, &$form_state) {
+  if (empty($form_state['renderer'])) {
+    return;
+  }
+  $renderer = $form_state['renderer'];
+
+  $cache_key = $renderer->display->cache_key;
+  list($module, $type, $key) = explode(':', $cache_key, 3);
+  if ($module != 'panelizer' || $type != 'node') {
+    return;
+  }
+
+  // Get the actual node so that we can get it's type.
+  list($nid, $view_mode) = explode(':', $key);
+  if (($node = node_load($nid)) && $node->type == 'panopoly_test_landing_page') {
+    // Change the 'Save as custom' button back to just 'Save'.
+    $form['buttons']['submit']['#value'] = t('Save');
+
+    // Remove the 'Revert' and 'Save as default' buttons.
+    unset($form['buttons']['revert_default']);
+    unset($form['buttons']['save_default']);
+  }
+}
diff --git a/panopoly_test.panelizer.inc b/panopoly_test.panelizer.inc
index ed91157..af2d96d 100644
--- a/panopoly_test.panelizer.inc
+++ b/panopoly_test.panelizer.inc
@@ -13,6 +13,44 @@ function panopoly_test_panelizer_defaults() {
   $panelizer = new stdClass();
   $panelizer->disabled = FALSE; /* Edit this to true to make a default panelizer disabled initially */
   $panelizer->api_version = 1;
+  $panelizer->name = 'node:panopoly_test_landing_page:default';
+  $panelizer->title = 'Default';
+  $panelizer->panelizer_type = 'node';
+  $panelizer->panelizer_key = 'panopoly_test_landing_page';
+  $panelizer->no_blocks = FALSE;
+  $panelizer->css_id = '';
+  $panelizer->css = '';
+  $panelizer->pipeline = 'ipe';
+  $panelizer->contexts = array();
+  $panelizer->relationships = array();
+  $panelizer->access = array();
+  $panelizer->view_mode = 'page_manager';
+  $panelizer->css_class = '';
+  $panelizer->title_element = 'H2';
+  $panelizer->link_to_entity = TRUE;
+  $panelizer->extra = array();
+  $display = new panels_display();
+  $display->layout = 'radix_boxton';
+  $display->layout_settings = array();
+  $display->panel_settings = array(
+    'style_settings' => array(
+      'default' => NULL,
+      'contentmain' => NULL,
+    ),
+  );
+  $display->cache = array();
+  $display->title = '%node:title';
+  $display->uuid = '9d26a711-39c5-4ef6-a421-e2feb7d9e4e3';
+  $display->content = array();
+  $display->panels = array();
+  $display->hide_title = PANELS_TITLE_FIXED;
+  $display->title_pane = '0';
+  $panelizer->display = $display;
+  $export['node:panopoly_test_landing_page:default'] = $panelizer;
+
+  $panelizer = new stdClass();
+  $panelizer->disabled = FALSE; /* Edit this to true to make a default panelizer disabled initially */
+  $panelizer->api_version = 1;
   $panelizer->name = 'node:panopoly_test_page:default';
   $panelizer->title = 'Default';
   $panelizer->panelizer_type = 'node';
diff --git a/panopoly_test.strongarm.inc b/panopoly_test.strongarm.inc
index 5857872..63ddcc5 100644
--- a/panopoly_test.strongarm.inc
+++ b/panopoly_test.strongarm.inc
@@ -13,6 +13,27 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'date_popup_authored_enabled_panopoly_test_landing_page';
+  $strongarm->value = 1;
+  $export['date_popup_authored_enabled_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
+  $strongarm->name = 'date_popup_authored_format_panopoly_test_landing_page';
+  $strongarm->value = 'm/d/Y - H:i';
+  $export['date_popup_authored_format_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
+  $strongarm->name = 'date_popup_authored_year_range_panopoly_test_landing_page';
+  $strongarm->value = '3';
+  $export['date_popup_authored_year_range_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'field_bundle_settings_node__panopoly_test_page';
   $strongarm->value = array(
     'view_modes' => array(),
@@ -52,6 +73,15 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'menu_options_panopoly_test_landing_page';
+  $strongarm->value = array(
+    0 => 'main-menu',
+  );
+  $export['menu_options_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'menu_options_panopoly_test_page';
   $strongarm->value = array(
     0 => 'main-menu',
@@ -70,6 +100,13 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'menu_parent_panopoly_test_landing_page';
+  $strongarm->value = 'main-menu:0';
+  $export['menu_parent_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'menu_parent_panopoly_test_page';
   $strongarm->value = 'main-menu:0';
   $export['menu_parent_panopoly_test_page'] = $strongarm;
@@ -84,6 +121,15 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'node_options_panopoly_test_landing_page';
+  $strongarm->value = array(
+    0 => 'status',
+  );
+  $export['node_options_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'node_options_panopoly_test_page';
   $strongarm->value = array(
     0 => 'status',
@@ -102,6 +148,13 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'node_preview_panopoly_test_landing_page';
+  $strongarm->value = '0';
+  $export['node_preview_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'node_preview_panopoly_test_page';
   $strongarm->value = '1';
   $export['node_preview_panopoly_test_page'] = $strongarm;
@@ -116,6 +169,13 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'node_submitted_panopoly_test_landing_page';
+  $strongarm->value = 0;
+  $export['node_submitted_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'node_submitted_panopoly_test_page';
   $strongarm->value = 1;
   $export['node_submitted_panopoly_test_page'] = $strongarm;
@@ -130,6 +190,62 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'panelizer_defaults_node_panopoly_test_landing_page';
+  $strongarm->value = array(
+    'status' => 1,
+    'view modes' => array(
+      'page_manager' => array(
+        'status' => 1,
+        'default' => 1,
+        'choice' => 0,
+      ),
+      'default' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+      'full' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+      'teaser' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+      'rss' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+      'search_index' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+      'search_result' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+      'featured' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+      'token' => array(
+        'status' => 0,
+        'default' => 0,
+        'choice' => 0,
+      ),
+    ),
+  );
+  $export['panelizer_defaults_node_panopoly_test_landing_page'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'panelizer_defaults_node_panopoly_test_page';
   $strongarm->value = array(
     'status' => 1,
@@ -161,6 +277,46 @@ function panopoly_test_strongarm() {
   $strongarm = new stdClass();
   $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
   $strongarm->api_version = 1;
+  $strongarm->name = 'panelizer_node:panopoly_test_landing_page_allowed_layouts';
+  $strongarm->value = 'O:22:"panels_allowed_layouts":4:{s:9:"allow_new";b:1;s:11:"module_name";s:41:"panelizer_node:panopoly_test_landing_page";s:23:"allowed_layout_settings";a:71:{s:8:"flexible";b:1;s:17:"threecol_33_34_33";b:1;s:6:"onecol";b:1;s:13:"twocol_bricks";b:1;s:6:"twocol";b:1;s:25:"threecol_25_50_25_stacked";b:1;s:25:"threecol_33_34_33_stacked";b:1;s:17:"threecol_25_50_25";b:1;s:14:"twocol_stacked";b:1;s:7:"moscone";b:1;s:5:"selby";b:1;s:4:"webb";b:1;s:7:"brenham";b:1;s:9:"sanderson";b:1;s:4:"pond";b:1;s:5:"sutro";b:1;s:6:"boxton";b:1;s:16:"bartlett_flipped";b:1;s:4:"burr";b:1;s:5:"geary";b:1;s:6:"taylor";b:1;s:6:"phelan";b:1;s:12:"sutro_double";b:1;s:6:"bryant";b:1;s:15:"moscone_flipped";b:1;s:15:"brenham_flipped";b:1;s:14:"taylor_flipped";b:1;s:8:"mccoppin";b:1;s:17:"sanderson_flipped";b:1;s:15:"hewston_flipped";b:1;s:7:"hewston";b:1;s:6:"whelan";b:1;s:6:"harris";b:1;s:12:"webb_flipped";b:1;s:13:"selby_flipped";b:1;s:5:"rolph";b:1;s:12:"burr_flipped";b:1;s:22:"bryant_flipped_flipped";b:1;s:5:"brown";b:1;s:8:"bartlett";b:1;s:12:"radix_phelan";b:1;s:20:"radix_taylor_flipped";b:1;s:13:"radix_moscone";b:1;s:23:"radix_sanderson_flipped";b:1;s:21:"radix_hewston_flipped";b:1;s:12:"radix_taylor";b:1;s:14:"radix_bartlett";b:1;s:12:"radix_whelan";b:1;s:12:"radix_boxton";b:1;s:19:"radix_selby_flipped";b:1;s:15:"radix_sanderson";b:1;s:11:"radix_sutro";b:1;s:20:"radix_bryant_flipped";b:1;s:18:"radix_sutro_double";b:1;s:13:"radix_brenham";b:1;s:10:"radix_burr";b:1;s:18:"radix_webb_flipped";b:1;s:18:"radix_burr_flipped";b:1;s:13:"radix_hewston";b:1;s:11:"radix_selby";b:1;s:21:"radix_brenham_flipped";b:1;s:21:"radix_moscone_flipped";b:1;s:10:"radix_webb";b:1;s:12:"radix_harris";b:1;s:10:"radix_pond";b:1;s:11:"radix_brown";b:1;s:11:"radix_geary";b:1;s:12:"radix_bryant";b:1;s:14:"radix_mccoppin";b:1;s:11:"radix_rolph";b:1;s:22:"radix_bartlett_flipped";b:1;}s:10:"form_state";N;}';
+  $export['panelizer_node:panopoly_test_landing_page_allowed_layouts'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
+  $strongarm->name = 'panelizer_node:panopoly_test_landing_page_allowed_layouts_default';
+  $strongarm->value = 1;
+  $export['panelizer_node:panopoly_test_landing_page_allowed_layouts_default'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
+  $strongarm->name = 'panelizer_node:panopoly_test_landing_page_allowed_types_default';
+  $strongarm->value = 1;
+  $export['panelizer_node:panopoly_test_landing_page_allowed_types_default'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
+  $strongarm->name = 'panelizer_node:panopoly_test_landing_page_default';
+  $strongarm->value = array(
+    'entity_form_field' => 'entity_form_field',
+    'token' => 'token',
+    'block' => 'block',
+    'entity_field' => 'entity_field',
+    'entity_field_extra' => 'entity_field_extra',
+    'custom' => 'custom',
+    'entity_view' => 'entity_view',
+    'fieldable_panels_pane' => 'fieldable_panels_pane',
+    'menu_tree' => 'menu_tree',
+    'views_panes' => 'views_panes',
+    'other' => 'other',
+  );
+  $export['panelizer_node:panopoly_test_landing_page_default'] = $strongarm;
+
+  $strongarm = new stdClass();
+  $strongarm->disabled = FALSE; /* Edit this to true to make a default strongarm disabled initially */
+  $strongarm->api_version = 1;
   $strongarm->name = 'panelizer_node:panopoly_test_page:page_manager_selection';
   $strongarm->value = 'node:panopoly_test_page:default';
   $export['panelizer_node:panopoly_test_page:page_manager_selection'] = $strongarm;
diff --git a/tests/features/text_widget.feature b/tests/features/text_widget.feature
index 32b4f4f..95f4b1d 100644
--- a/tests/features/text_widget.feature
+++ b/tests/features/text_widget.feature
@@ -17,7 +17,7 @@ Feature: Add text widget
       | Editor  | plain_text              |
       | Text    | Testing text body field |
       And I press "Save" in the "CTools modal" region
-      And I press "Save"
+      And I press "Save as custom"
       And I wait for the Panels IPE to deactivate
     Then I should see "Text widget title"
       And I should see "Testing text body field"
diff --git a/tests/steps/panopoly_test.behat.inc b/tests/steps/panopoly_test.behat.inc
index f089d16..7fb1ea2 100644
--- a/tests/steps/panopoly_test.behat.inc
+++ b/tests/steps/panopoly_test.behat.inc
@@ -30,7 +30,6 @@ class TestSubContext extends BehatContext implements DrupalSubContextInterface {
   }
 
   protected $menu_rebuilt = FALSE;
-  protected $landing_pages = array();
   protected $private_path_overridden = FALSE;
 
   /**
@@ -41,14 +40,14 @@ class TestSubContext extends BehatContext implements DrupalSubContextInterface {
   }
 
   /**
-   * @Given /^I switch to the frame "([^"]*)"$/
+   * @When /^I switch to the frame "([^"]*)"$/
    */
   public function iSwitchToTheFrame($frame) {
     $this->getSession()->switchToIFrame($frame);
   }
 
   /**
-   * @Given /^I switch out of all frames$/
+   * @When /^I switch out of all frames$/
    */
   public function iSwitchOutOfAllFrames() {
     $this->getSession()->switchToIFrame();
@@ -256,31 +255,6 @@ class TestSubContext extends BehatContext implements DrupalSubContextInterface {
   }
 
   /**
-   * @BeforeScenario @api
-   *
-   * Bootstrap Drupal so that all Drupal API functions work.
-   */
-  public function drupalMenuRebuild($event) {
-    if (!$this->menu_rebuilt) {
-      $drupal = $this->getMainContext()->getDriver('drupal');
-
-      // Drupal is having a cache or registry issue that is causing tests to
-      // fail (certain CTools plugin functions won't exist.) Menu rebuild does
-      // the trick and fixes any fatal errors due to missing functions!
-      $current_path = getcwd();
-      chdir(DRUPAL_ROOT);
-      menu_rebuild();
-      chdir($current_path);
-
-      // We occasionally get errors about not finding the ctools_get_export_ui()
-      // function, so we force it to be loaded. No idea what's causing this.
-      ctools_include('export-ui');
-
-      $this->menu_rebuilt = TRUE;
-    }
-  }
-
-  /**
    * @BeforeScenario @api&&@drupal_private_files
    *
    * Configure a private files path if one isn't already configured.
@@ -335,7 +309,9 @@ class TestSubContext extends BehatContext implements DrupalSubContextInterface {
    * loading to finish.
    */
   public function afterStep(StepEvent $event) {
-    if ($event->getResult() === 0) {
+    $type = $event->getDefinition()->getType();
+    $text = $event->getStep()->getText();
+    if (($type === 'When' || preg_match('/viewing|visit|reload/', $text)) && $event->getResult() === 0) {
       $this->iWaitForAJAX();
     }
   }
@@ -389,7 +365,7 @@ class TestSubContext extends BehatContext implements DrupalSubContextInterface {
   }
 
   /**
-   * @Given /^(?:|I )wait(?:| for) (\d+) seconds?$/
+   * @When /^(?:|I )wait(?:| for) (\d+) seconds?$/
    *
    * Wait for the given number of seconds. ONLY USE FOR DEBUGGING!
    */
@@ -398,7 +374,7 @@ class TestSubContext extends BehatContext implements DrupalSubContextInterface {
   }
 
   /**
-   * @Given /^(?:|I )wait for AJAX loading to finish$/
+   * @When /^(?:|I )wait for AJAX loading to finish$/
    *
    * Wait for the jQuery AJAX loading to finish. ONLY USE FOR DEBUGGING!
    */
@@ -443,75 +419,12 @@ class TestSubContext extends BehatContext implements DrupalSubContextInterface {
   }
 
   /**
-   * Create a new Landing Page.
-   *
-   * @param string $name
-   *   The internal machine name for the new Page.
-   * @param string $path
-   *   The path for the new Page.
-   * @param string $title
-   *   The title for the new Page.
-   */
-  protected function createPage($name, $path, $title) {
-    $page_task = page_manager_get_task('page');
-
-    $subtask = page_manager_page_new();
-    $subtask->name = $name;
-    $subtask->path = $path;
-    $subtask->admin_title = $title;
-    $subtask->admin_description = '';
-    $subtask->menu = array(
-      'type' => 'none',
-    );
-
-    $display = new stdClass();
-    $display->layout = 'boxton';
-    $display->title = $title;
-    $display->panels = array();
-    $display->content = array();
-
-    $plugin = page_manager_get_task_handler('panel_context');
-    $handler = page_manager_new_task_handler($plugin);
-    $handler->conf['title'] = t('Landing page');
-    $handler->conf['display'] = $display;
-    $handler->conf['pipeline'] = 'ipe';
-
-    // Assemble a new $page cache and assign it to our page subtask and task
-    // handler.
-    $page = new stdClass();
-    page_manager_page_new_page_cache($subtask, $page);
-    page_manager_handler_add_to_page($page, $handler);
-    page_manager_save_page_cache($page);
-
-    // Mark this page for deletion at the end of the scenario.
-    $this->landing_pages[] = $name;
-  }
-
-  /**
-   * @AfterScenario @api
-   *
-   * Delete landing pages after a Scenario has finished.
-   */
-  public function cleanupPages() {
-    foreach ($this->landing_pages as $name) {
-      if ($page = page_manager_page_load($name)) {
-        page_manager_page_delete($page);
-      }
-    }
-    $this->landing_pages = array();
-  }
-
-  /**
    * @Given /^I am viewing a landing page$/
    */
   public function iAmViewingALandingPage() {
     $random = new Random();
     $name = $random->name(8);
-    $path = $random->name(8);
-
-    $this->createPage($name, $path, 'Testing Landing Page');
-
-    $this->getSession()->visit($this->getMainContext()->locatePath($path));
+    $this->getMainContext()->createNode('panopoly_test_landing_page', $name);
   }
 
   /**
diff --git a/tests/steps/panopoly_test_media.behat.inc b/tests/steps/panopoly_test_media.behat.inc
index 5701acf..c0be940 100644
--- a/tests/steps/panopoly_test_media.behat.inc
+++ b/tests/steps/panopoly_test_media.behat.inc
@@ -28,7 +28,7 @@ class MediaSubContext extends BehatContext implements DrupalSubContextInterface
   }
 
   /**
-   * @Given /^I click the fake "([^"]*)" button$/
+   * @When /^I click the fake "([^"]*)" button$/
    */
   public function iClickTheFakeButton($text) {
     // Media style selector "buttons" are A tags with no href, so not findable
