diff --git a/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php b/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
index 85f901f..6d33eb6 100644
--- a/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
+++ b/lib/Drupal/views/Plugin/views/relationship/GroupwiseMax.php
@@ -162,7 +162,7 @@ class GroupwiseMax extends RelationshipPluginBase {
    * We use this to obtain our subquery SQL.
    */
   function get_temporary_view() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->vid = 'new'; // @todo: what's this?
     $view->base_table = $this->definition['base'];
     $view->add_display('default');
diff --git a/lib/Drupal/views/Tests/AccessTest.php b/lib/Drupal/views/Tests/AccessTest.php
index c52681f..3431212 100644
--- a/lib/Drupal/views/Tests/AccessTest.php
+++ b/lib/Drupal/views/Tests/AccessTest.php
@@ -142,7 +142,7 @@ class AccessTest extends ViewsSchemaTestBase {
   }
 
   function view_access_none() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_access_none';
     $view->description = '';
     $view->tag = '';
@@ -165,7 +165,7 @@ class AccessTest extends ViewsSchemaTestBase {
   }
 
   function view_access_perm() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_access_perm';
     $view->description = '';
     $view->tag = '';
@@ -189,7 +189,7 @@ class AccessTest extends ViewsSchemaTestBase {
   }
 
   function view_access_role() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_access_role';
     $view->description = '';
     $view->tag = '';
@@ -215,7 +215,7 @@ class AccessTest extends ViewsSchemaTestBase {
   }
 
   function view_access_dynamic() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_access_dynamic';
     $view->description = '';
     $view->tag = '';
@@ -241,7 +241,7 @@ class AccessTest extends ViewsSchemaTestBase {
   }
 
   function view_access_static() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_access_static';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/ArgumentDefaultTest.php b/lib/Drupal/views/Tests/ArgumentDefaultTest.php
index 782d3d5..f858d8c 100644
--- a/lib/Drupal/views/Tests/ArgumentDefaultTest.php
+++ b/lib/Drupal/views/Tests/ArgumentDefaultTest.php
@@ -96,7 +96,7 @@ class ArgumentDefaultTest extends ViewsSchemaTestBase {
   //function testArgumentDefaultNode() {}
 
   function view_argument_default_fixed() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_argument_default_fixed';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/ArgumentValidatorTest.php b/lib/Drupal/views/Tests/ArgumentValidatorTest.php
index b6b0c01..f2605cf 100644
--- a/lib/Drupal/views/Tests/ArgumentValidatorTest.php
+++ b/lib/Drupal/views/Tests/ArgumentValidatorTest.php
@@ -46,7 +46,7 @@ class ArgumentValidatorTest extends ViewsSqlTest {
 
   function view_test_argument_validate_php($string) {
     $code = 'return $argument == \''. $string .'\';';
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'view_argument_validate_numeric';
     $view->description = '';
     $view->tag = '';
@@ -78,7 +78,7 @@ class ArgumentValidatorTest extends ViewsSqlTest {
   }
 
   function view_argument_validate_numeric() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'view_argument_validate_numeric';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/CacheTest.php b/lib/Drupal/views/Tests/CacheTest.php
index 23f8472..2406095 100644
--- a/lib/Drupal/views/Tests/CacheTest.php
+++ b/lib/Drupal/views/Tests/CacheTest.php
@@ -31,7 +31,7 @@ class CacheTest extends ViewsSchemaTestBase {
    */
   protected function getBasicView() {
     // Create the basic view.
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_view';
     $view->add_display('default');
     $view->base_table = 'views_test';
diff --git a/lib/Drupal/views/Tests/Comment/ArgumentCommentUserUidTest.php b/lib/Drupal/views/Tests/Comment/ArgumentCommentUserUidTest.php
index f6abd57..b1ca9ca 100644
--- a/lib/Drupal/views/Tests/Comment/ArgumentCommentUserUidTest.php
+++ b/lib/Drupal/views/Tests/Comment/ArgumentCommentUserUidTest.php
@@ -74,7 +74,7 @@ class ArgumentCommentUserUidTest extends ViewsSqlTest {
   }
 
   function view_comment_user_uid() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_comment_user_uid';
     $view->description = '';
     $view->tag = 'default';
diff --git a/lib/Drupal/views/Tests/Field/HandlerFieldFieldTest.php b/lib/Drupal/views/Tests/Field/HandlerFieldFieldTest.php
index 9116d2c..8a1c1b3 100644
--- a/lib/Drupal/views/Tests/Field/HandlerFieldFieldTest.php
+++ b/lib/Drupal/views/Tests/Field/HandlerFieldFieldTest.php
@@ -201,7 +201,7 @@ class HandlerFieldFieldTest extends ApiTestBase {
   }
 
   protected function getFieldView() {
-    $view = new View;
+    $view = new View(array(), 'view');
     $view->name = 'view_fieldapi';
     $view->description = '';
     $view->tag = 'default';
diff --git a/lib/Drupal/views/Tests/Handler/ArgumentStringTest.php b/lib/Drupal/views/Tests/Handler/ArgumentStringTest.php
index 2b9c1fa..2d0f6c4 100644
--- a/lib/Drupal/views/Tests/Handler/ArgumentStringTest.php
+++ b/lib/Drupal/views/Tests/Handler/ArgumentStringTest.php
@@ -62,7 +62,7 @@ class ArgumentStringTest extends ViewsSqlTest {
    * @return Drupal\views\View
    */
   function viewGlossary() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_glossary';
     $view->description = '';
     $view->tag = 'default';
diff --git a/lib/Drupal/views/Tests/Handler/FilterDateTest.php b/lib/Drupal/views/Tests/Handler/FilterDateTest.php
index e86bed1..ec2c1d0 100644
--- a/lib/Drupal/views/Tests/Handler/FilterDateTest.php
+++ b/lib/Drupal/views/Tests/Handler/FilterDateTest.php
@@ -155,7 +155,7 @@ class FilterDateTest extends ViewsSqlTest {
   }
 
   function views_test_between() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_filter_date_between';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/HandlersTest.php b/lib/Drupal/views/Tests/HandlersTest.php
index 9ba9117..15fc927 100644
--- a/lib/Drupal/views/Tests/HandlersTest.php
+++ b/lib/Drupal/views/Tests/HandlersTest.php
@@ -47,7 +47,9 @@ class HandlersTest extends ViewsSchemaTestBase {
     $empty_stdclass->operator = 'or';
     $empty_stdclass->value = array();
 
+    views_include('handlers');
     $null = NULL;
+
     // check defaults
     $this->assertEqual($empty_stdclass, views_break_phrase_string('', $null));
 
diff --git a/lib/Drupal/views/Tests/PagerTest.php b/lib/Drupal/views/Tests/PagerTest.php
index d2550bc..756a0ed 100644
--- a/lib/Drupal/views/Tests/PagerTest.php
+++ b/lib/Drupal/views/Tests/PagerTest.php
@@ -96,7 +96,7 @@ class PagerTest extends ViewsSqlTest {
   }
 
   public function viewsStorePagerSettings() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_store_pager_settings';
     $view->description = '';
     $view->tag = '';
@@ -155,7 +155,7 @@ class PagerTest extends ViewsSqlTest {
   }
 
   public function viewsPagerNoLimit() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_pager_none';
     $view->description = '';
     $view->tag = '';
@@ -231,7 +231,7 @@ class PagerTest extends ViewsSqlTest {
   }
 
   public function viewsPagerLimit() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_pager_some';
     $view->description = '';
     $view->tag = '';
@@ -315,7 +315,7 @@ class PagerTest extends ViewsSqlTest {
   }
 
   function viewPagerFullZeroItemsPerPage() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'view_pager_full_zero_items_per_page';
     $view->description = '';
     $view->tag = '';
@@ -355,7 +355,7 @@ class PagerTest extends ViewsSqlTest {
   }
 
   function viewsPagerFull() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_pager_full';
     $view->description = '';
     $view->tag = '';
@@ -381,7 +381,7 @@ class PagerTest extends ViewsSqlTest {
   }
 
   function viewsPagerFullFields() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_pager_full';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/Plugin/DisplayTestCase.php b/lib/Drupal/views/Tests/Plugin/DisplayTestCase.php
index a44c8c5..888e656 100644
--- a/lib/Drupal/views/Tests/Plugin/DisplayTestCase.php
+++ b/lib/Drupal/views/Tests/Plugin/DisplayTestCase.php
@@ -43,7 +43,7 @@ class DisplayTestCase extends ViewsSqlTest {
    * @return Drupal\views\View
    */
   function viewFilterGroupsOverriding() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_filter_group_override';
     $view->description = '';
     $view->tag = 'default';
@@ -92,7 +92,7 @@ class DisplayTestCase extends ViewsSqlTest {
    * @return Drupal\views\View
    */
   function viewFilterGroupsUpdating() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_filter_groups';
     $view->description = '';
     $view->tag = 'default';
diff --git a/lib/Drupal/views/Tests/QueryGroupByTest.php b/lib/Drupal/views/Tests/QueryGroupByTest.php
index 70498de..18cf7d5 100644
--- a/lib/Drupal/views/Tests/QueryGroupByTest.php
+++ b/lib/Drupal/views/Tests/QueryGroupByTest.php
@@ -72,7 +72,7 @@ class QueryGroupByTest extends ViewsSqlTest {
   //}
 
   public function viewsAggregateCountView() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'aggregate_count';
     $view->description = '';
     $view->tag = '';
@@ -157,7 +157,7 @@ class QueryGroupByTest extends ViewsSqlTest {
   }
 
   function viewsGroupByViewHelper($group_by) {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'group_by_count';
     $view->description = '';
     $view->tag = '';
@@ -251,7 +251,7 @@ class QueryGroupByTest extends ViewsSqlTest {
   }
 
   public function viewsGroupByCountViewOnlyFilters() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'group_by_in_filters';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/Taxonomy/RelationshipNodeTermDataTest.php b/lib/Drupal/views/Tests/Taxonomy/RelationshipNodeTermDataTest.php
index ec6ca6a..cbe0f97 100644
--- a/lib/Drupal/views/Tests/Taxonomy/RelationshipNodeTermDataTest.php
+++ b/lib/Drupal/views/Tests/Taxonomy/RelationshipNodeTermDataTest.php
@@ -70,7 +70,7 @@ class RelationshipNodeTermDataTest extends ViewsSqlTest {
   }
 
   function view_taxonomy_node_term_data() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_taxonomy_node_term_data';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/TranslatableTest.php b/lib/Drupal/views/Tests/TranslatableTest.php
index 7fb89f1..99b725f 100644
--- a/lib/Drupal/views/Tests/TranslatableTest.php
+++ b/lib/Drupal/views/Tests/TranslatableTest.php
@@ -142,7 +142,7 @@ class TranslatableTest extends ViewsSqlTest {
   }
 
   public function view_unpack_translatable() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'view_unpack_translatable';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/UpgradeTestCase.php b/lib/Drupal/views/Tests/UpgradeTestCase.php
index d0f420e..0faba87 100644
--- a/lib/Drupal/views/Tests/UpgradeTestCase.php
+++ b/lib/Drupal/views/Tests/UpgradeTestCase.php
@@ -119,7 +119,7 @@ class UpgradeTestCase extends ViewsSchemaTestBase {
   }
 
   public function viewsMovedToField() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_views_move_to_field';
     $view->description = '';
     $view->tag = '';
@@ -140,7 +140,7 @@ class UpgradeTestCase extends ViewsSchemaTestBase {
   }
 
   public function viewsMovedToHandler() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_views_move_to_handler';
     $view->description = '';
     $view->tag = '';
@@ -165,7 +165,7 @@ class UpgradeTestCase extends ViewsSchemaTestBase {
   }
 
   public function viewsMovedToTable() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_views_move_to_table';
     $view->description = '';
     $view->tag = '';
@@ -187,7 +187,7 @@ class UpgradeTestCase extends ViewsSchemaTestBase {
 
   protected function viewUpgradeImport() {
     $import = '
-      $view = new Drupal\views\View();
+      $view = new Drupal\views\View(array(), "view");
       $view->name = "comments_recent";
       $view->description = "Contains a block and a page to list recent comments; the block will automatically link to the page, which displays the comment body as well as a link to the node.";
       $view->tag = "default";
diff --git a/lib/Drupal/views/Tests/User/HandlerFieldUserNameTest.php b/lib/Drupal/views/Tests/User/HandlerFieldUserNameTest.php
index 9fa3bc4..73eb0fd 100644
--- a/lib/Drupal/views/Tests/User/HandlerFieldUserNameTest.php
+++ b/lib/Drupal/views/Tests/User/HandlerFieldUserNameTest.php
@@ -58,7 +58,7 @@ class HandlerFieldUserNameTest extends ViewsSqlTest {
 
   }
   function view_user_name() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_views_handler_field_user_name';
     $view->description = '';
     $view->tag = 'default';
diff --git a/lib/Drupal/views/Tests/User/UserArgumentDefault.php b/lib/Drupal/views/Tests/User/UserArgumentDefault.php
index 838fbfe..a490dc9 100644
--- a/lib/Drupal/views/Tests/User/UserArgumentDefault.php
+++ b/lib/Drupal/views/Tests/User/UserArgumentDefault.php
@@ -46,7 +46,7 @@ class UserArgumentDefault extends ViewsSqlTest {
   }
 
   function view_plugin_argument_default_current_user() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_plugin_argument_default_current_user';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/User/UserArgumentValidate.php b/lib/Drupal/views/Tests/User/UserArgumentValidate.php
index d6e776d..7b39d3a 100644
--- a/lib/Drupal/views/Tests/User/UserArgumentValidate.php
+++ b/lib/Drupal/views/Tests/User/UserArgumentValidate.php
@@ -88,7 +88,7 @@ class UserArgumentValidate extends ViewsSqlTest {
   }
 
   function view_argument_validate_user($argtype) {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'view_argument_validate_user';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/User/UserTestCase.php b/lib/Drupal/views/Tests/User/UserTestCase.php
index 3addf52..a62f25d 100644
--- a/lib/Drupal/views/Tests/User/UserTestCase.php
+++ b/lib/Drupal/views/Tests/User/UserTestCase.php
@@ -57,7 +57,7 @@ class UserTestCase extends ViewsSqlTest {
   }
 
   function test_view_user_relationship() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_user_relationship';
     $view->description = '';
     $view->tag = 'default';
diff --git a/lib/Drupal/views/Tests/ViewStorageTest.php b/lib/Drupal/views/Tests/ViewStorageTest.php
new file mode 100644
index 0000000..27ccb6f
--- /dev/null
+++ b/lib/Drupal/views/Tests/ViewStorageTest.php
@@ -0,0 +1,272 @@
+<?php
+
+/**
+ * Definition of Drupal\views\Tests\ViewStorageTest.
+ */
+
+namespace Drupal\views\Tests;
+
+use Drupal\simpletest\WebTestBase;
+use Drupal\views\ViewStorageController;
+use Drupal\views\View;
+use Drupal\views\ViewDisplay;
+use Drupal\views\Plugin\views\display\Page;
+
+/**
+ * Tests that functionality of the the ViewStorageController.
+ */
+class ViewStorageTest extends WebTestBase {
+
+  /**
+   * Properties that should be stored in the configuration.
+   *
+   * @var array
+   */
+  protected $config_properties = array(
+    'disabled',
+    'api_version',
+    'name',
+    'description',
+    'tag',
+    'base_table',
+    'human_name',
+    'core',
+    'display',
+  );
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = array('views');
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Views configurable CRUD tests',
+      'description' => 'Test the CRUD functionality for ViewStorage.',
+      'group' => 'Views',
+    );
+  }
+
+  /**
+   * Tests CRUD operations.
+   */
+  function testConfigurableCRUD() {
+    // Get the Configurable information and controller.
+    $this->info = entity_get_info('view');
+    $this->controller = entity_get_controller('view');
+
+    // Confirm that an info array has been returned.
+    $this->assertTrue(!empty($this->info) && is_array($this->info), 'The View  info array is loaded.');
+
+    // Confirm we have the correct controller class.
+    $this->assertTrue($this->controller instanceof ViewStorageController, 'The correct controller is loaded.');
+
+    // CRUD tests.
+    $this->loadTests();
+    $this->createTests();
+    $this->saveTests();
+    $this->deleteTests();
+    $this->displayTests();
+    $this->statusTests();
+  }
+
+  /**
+   * Tests loading configurables.
+   */
+  protected function loadTests() {
+    $view = $this->loadView('archive');
+
+    // Confirm that an actual view object is loaded and that it returns all of
+    // expected properties.
+    $this->assertTrue($view instanceof View, 'Single View instance loaded.');
+    foreach ($this->config_properties as $property) {
+      $this->assertTrue(isset($view->{$property}), format_string('Property: @property loaded onto View.', array('@property' => $property)));
+    }
+
+    // Check the displays have been loaded correctly from config display data.
+    $expected_displays = array('default', 'page', 'block');
+    $this->assertEqual(array_keys($view->display), $expected_displays, 'The correct display names are present.');
+
+    // Check each ViewDisplay object and confirm that it has the correct key.
+    foreach ($view->display as $key => $display) {
+      $this->assertTrue($display instanceof ViewDisplay, format_string('Display: @display is instance of ViewDisplay.', array('@display' => $key)));
+      $this->assertEqual($key, $display->id, 'The display has the correct ID.');
+      // Confirm that the display options array exists.
+      $display_options = $display->display_options;
+      $this->assertTrue(!empty($display_options) && is_array($display_options), 'Display options exist.');
+    }
+
+    // Fetch data for all Configurable objects and default view configurations.
+    $all_configurables = $this->controller->load();
+    $all_config = config_get_storage_names_with_prefix('views.view');
+
+    // Remove the 'views.view.' prefix from config names for comparision with
+    // loaded Configurable objects.
+    $prefix_map = function ($value) {
+      $parts = explode('.', $value);
+      return end($parts);
+    };
+
+    // Check that the correct number of Configurable objects have been loaded.
+    $count = count($all_configurables);
+    $this->assertEqual($count, count($all_config), format_string('The array of all @count Configurable objects is loaded.', array('@count' => $count)));
+
+    // Check that all of these machine names match.
+    $this->assertIdentical(array_keys($all_configurables), array_map($prefix_map, $all_config), 'All loaded elements match.');
+  }
+
+  /**
+   * Tests creating configurables.
+   */
+  protected function createTests() {
+    // Create a new View instance with empty values.
+    $created = $this->controller->create(array());
+
+    $this->assertTrue($created instanceof View, 'Created object is a View.');
+    // Check that the View contains all of the properties.
+    foreach ($this->config_properties as $property) {
+      $this->assertTrue(property_exists($created, $property), format_string('Property: @property created on View.', array('@property' => $property)));
+    }
+
+    // Create a new View instance with config values.
+    $values = config('views.view.glossary')->get();
+    $created = $this->controller->create($values);
+
+    $this->assertTrue($created instanceof View, 'Created object is a View.');
+    // Check that the View contains all of the properties.
+    $properties = $this->config_properties;
+    // Remove display from list.
+    array_pop($properties);
+
+    // Test all properties except displays.
+    foreach ($properties as $property) {
+      $this->assertTrue(isset($created->{$property}), format_string('Property: @property created on View.', array('@property' => $property)));
+      $this->assertIdentical($values[$property], $created->{$property}, format_string('Property value: @property matches configuration value.', array('@property' => $property)));
+    }
+
+    // Test created displays.
+    foreach ($created->display as $key => $display) {
+      $this->assertTrue($display instanceof ViewDisplay, format_string('Display @display is an instance of ViewDisplay.', array('@display' => $key)));
+    }
+
+  }
+
+  /**
+   * Tests saving configurables.
+   */
+  protected function saveTests() {
+    $view = $this->loadView('archive');
+
+    // Save the newly created view, but modify the name.
+    $view->set('name', 'archive_copy');
+    $view->set('tag', 'changed');
+    $view->save();
+
+    // Load the newly saved config.
+    $config = config('views.view.archive_copy');
+    $this->assertFalse($config->isNew(), 'New config has been loaded.');
+
+    $this->assertEqual($view->tag, $config->get('tag'), 'A changed value has been saved.');
+
+    // Change a value and save.
+    $view->tag = 'changed';
+    $view->save();
+
+    // Check values have been written to config.
+    $config = config('views.view.archive_copy')->get();
+    $this->assertEqual($view->tag, $config['tag'], 'View property saved to config.');
+
+    // Check whether load, save and load produce the same kind of view.
+    $values = config('views.view.archive')->get();
+    $created = $this->controller->create($values);
+
+    $created->save();
+    $created_loaded = $this->loadView($created->id());
+    $values_loaded = config('views.view.archive')->get();
+
+    $this->assertTrue(isset($created_loaded->display['default']->display_options), 'Make sure that the display options exist.');
+    $this->assertEqual($created_loaded->display['default']->display_plugin, 'default', 'Make sure the right display plugin is set.');
+
+    $this->assertEqual($values, $values_loaded, 'The loaded config is the same as the original loaded one.');
+
+  }
+
+  /**
+   * Tests deleting configurables.
+   */
+  protected function deleteTests() {
+    $view = $this->loadView('tracker');
+
+    // Delete the config.
+    $view->delete();
+    $config = config('views.view.tracker');
+
+    $this->assertTrue($config->isNew(), 'Deleted config is now new.');
+  }
+
+  /**
+   * Tests adding/saving/loading displays on configurables.
+   */
+  protected function displayTests() {
+    // Check whether a display can be added and saved to a View.
+    $view = $this->loadView('frontpage');
+
+    $view->new_display('page', 'Test', 'test');
+
+    $new_display = $view->display['test'];
+    $this->assertTrue($new_display instanceof ViewDisplay, 'New page display "test" created.');
+
+    // Take sure the right display_plugin is created/instantiated.
+    $this->assertEqual($new_display->display_plugin, 'page', 'New page display "test" uses the right display plugin.');
+    $view->init_display();
+    $this->assertTrue($new_display->handler instanceof Page, 'New page display "test" uses the right display plugin.');
+
+
+    $view->set('name', 'frontpage_new');
+    $view->save();
+    $values = config('views.view.frontpage_new')->get();
+
+    $this->assertTrue(isset($values['display']['test']) && is_array($values['display']['test']), 'New display was saved.');
+  }
+
+  /**
+   * Tests statuses of configurables.
+   */
+  protected function statusTests() {
+    // Test a View can be enabled and disabled again (with a new view).
+    $view = $this->loadView('backlinks');
+
+    // The view should already be disabled.
+    $view->enable();
+    $this->assertTrue($view->isEnabled(), 'A view has been enabled.');
+
+    // Check the saved values.
+    $view->save();
+    $config = config('views.view.backlinks')->get();
+    $this->assertFalse($config['disabled'], 'The changed disabled property was saved.');
+
+    // Disable the view.
+    $view->disable();
+    $this->assertFalse($view->isEnabled(), 'A view has been disabled.');
+
+    // Check the saved values.
+    $view->save();
+    $config = config('views.view.backlinks')->get();
+    $this->assertTrue($config['disabled'], 'The changed disabled property was saved.');
+  }
+
+  /**
+   * Load a single Configurable object from the controller.
+   *
+   * @param string $view_name
+   *
+   * @return object Drupal\views\View.
+   */
+  protected function loadView($view_name) {
+    $load = $this->controller->load(array($view_name));
+    return reset($load);
+  }
+
+}
diff --git a/lib/Drupal/views/Tests/ViewTest.php b/lib/Drupal/views/Tests/ViewTest.php
index 47428b0..12c5a0f 100644
--- a/lib/Drupal/views/Tests/ViewTest.php
+++ b/lib/Drupal/views/Tests/ViewTest.php
@@ -70,20 +70,6 @@ class ViewTest extends ViewsSqlTest {
     $this->assertEqual($view->attachment_after, '');
   }
 
-  function testDelete() {
-    // Delete a database view
-    $view = $this->view_test_delete();
-    $view->save();
-    $view = views_get_view($view->name);
-    $view->delete();
-
-    $view = views_get_view($view->name);
-    $this->assertNotNull($view, 'Make sure that the old view is still in the static cache.');
-
-    $view = views_get_view($view->name, TRUE);
-    $this->assertNull($view, "Make sure that the old view gets cleared by the reset parameter.");
-  }
-
   function testValidate() {
     // Test a view with multiple displays.
     // Validating a view shouldn't change the active display.
@@ -105,7 +91,7 @@ class ViewTest extends ViewsSqlTest {
    * This view provides some filters, fields, arguments, relationships, sorts, areas and attachments.
    */
   function view_test_destroy() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_destroy';
     $view->description = '';
     $view->tag = '';
@@ -261,7 +247,7 @@ class ViewTest extends ViewsSqlTest {
     return $view;
   }
   function view_test_delete() {
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_view_delete';
     $view->description = '';
     $view->tag = '';
diff --git a/lib/Drupal/views/Tests/ViewsSqlTest.php b/lib/Drupal/views/Tests/ViewsSqlTest.php
index 2586446..cd1c79a 100644
--- a/lib/Drupal/views/Tests/ViewsSqlTest.php
+++ b/lib/Drupal/views/Tests/ViewsSqlTest.php
@@ -358,7 +358,7 @@ abstract class ViewsSqlTest extends WebTestBase {
    */
   protected function getBasicView() {
     // Create the basic view.
-    $view = new View();
+    $view = new View(array(), 'view');
     $view->name = 'test_view';
     $view->add_display('default');
     $view->base_table = 'views_test';
diff --git a/lib/Drupal/views/View.php b/lib/Drupal/views/View.php
index c344e69..e8bb930 100644
--- a/lib/Drupal/views/View.php
+++ b/lib/Drupal/views/View.php
@@ -21,9 +21,7 @@ use Drupal\views\Plugin\Type\ViewsPluginManager;
  * An object to contain all of the data to generate a view, plus the member
  * functions to build the view query, execute the query and render the output.
  */
-class View extends ViewsDbObject {
-
-  var $db_table = 'views_view';
+class View extends ViewStorage {
 
   var $base_table = 'node';
 
@@ -37,13 +35,6 @@ class View extends ViewsDbObject {
   var $name = "";
 
   /**
-   * The id of the view, which is used only for views in the database.
-   *
-   * @var number
-   */
-  var $vid;
-
-  /**
    * The description of the view, which is used only in the interface.
    *
    * @var string
@@ -276,17 +267,6 @@ class View extends ViewsDbObject {
   protected $response = NULL;
 
   /**
-   * Constructor
-   */
-  function __construct() {
-    parent::init();
-    // Make sure all of our sub objects are arrays.
-    foreach ($this->db_objects() as $key => $object) {
-      $this->$key = array();
-    }
-  }
-
-  /**
    * Perform automatic updates when loading or importing a view.
    *
    * Over time, some things about Views or Drupal data has changed.
@@ -309,14 +289,6 @@ class View extends ViewsDbObject {
   }
 
   /**
-   * Returns the complete list of dependent objects in a view, for the purpose
-   * of initialization and loading/saving to/from the database.
-   */
-  static function db_objects() {
-    return array('display' => 'Display');
-  }
-
-  /**
    * Set the arguments that come to this view. Usually from the URL
    * but possibly from elsewhere.
    */
@@ -1803,186 +1775,6 @@ class View extends ViewsDbObject {
   }
 
   /**
-   * Static factory method to load a list of views based upon a $where clause.
-   *
-   * Although this method could be implemented to simply iterate over views::load(),
-   * that would be very slow.  Buiding the views externally from unified queries is
-   * much faster.
-   */
-  static function load_views() {
-    $result = db_query("SELECT DISTINCT v.* FROM {views_view} v");
-    $views = array();
-
-    // Load all the views.
-    foreach ($result as $data) {
-      $view = new View();
-      $view->load_row($data);
-      $view->loaded = TRUE;
-      $view->type = t('Normal');
-      $views[$view->name] = $view;
-      $names[$view->vid] = $view->name;
-    }
-
-    // Stop if we didn't get any views.
-    if (!$views) {
-      return array();
-    }
-
-    // Now load all the subtables:
-    foreach (View::db_objects() as $key => $object) {
-      $table_name = "views_" . $key;
-      $object_name = "Views$object";
-      $result = db_query("SELECT * FROM {{$table_name}} WHERE vid IN (:vids) ORDER BY vid, position",
-        array(':vids' => array_keys($names)));
-
-      foreach ($result as $data) {
-        $object = new $object_name(FALSE);
-        $object->load_row($data);
-
-        // Because it can get complicated with this much indirection,
-        // make a shortcut reference.
-        $location = &$views[$names[$object->vid]]->$key;
-
-        // If we have a basic id field, load the item onto the view based on
-        // this ID, otherwise push it on.
-        if (!empty($object->id)) {
-          $location[$object->id] = $object;
-        }
-        else {
-          $location[] = $object;
-        }
-      }
-    }
-    return $views;
-  }
-
-  /**
-   * Save the view to the database. If the view does not already exist,
-   * A vid will be assigned to the view and also returned from this function.
-   */
-  function save() {
-    if ($this->vid == 'new') {
-      $this->vid = NULL;
-    }
-    // If there is no vid, check if a view with this machine name already exists.
-    elseif (empty($this->vid)) {
-      $vid = db_query("SELECT vid from {views_view} WHERE name = :name", array(':name' => $this->name))->fetchField();
-      $this->vid = $vid ? $vid : NULL;
-    }
-
-    $transaction = db_transaction();
-
-    try {
-      // If we have no vid or our vid is a string, this is a new view.
-      if (!empty($this->vid)) {
-        // remove existing table entries
-        foreach ($this->db_objects() as $key => $object) {
-          db_delete('views_' . $key)
-            ->condition('vid', $this->vid)
-            ->execute();
-        }
-      }
-
-      $this->save_row(!empty($this->vid) ? 'vid' : FALSE);
-
-      // Save all of our subtables.
-      foreach ($this->db_objects() as $key => $object) {
-        $this->_save_rows($key);
-      }
-    }
-    catch (Exception $e) {
-      $transaction->rollback();
-      watchdog_exception('views', $e);
-      throw $e;
-    }
-
-    $this->save_locale_strings();
-
-    // Clear caches.
-    views_invalidate_cache();
-
-    // @todo Remove this.
-    // Explicitly rebuild the menu.
-    menu_router_rebuild();
-  }
-
-  /**
-   * Save a row to the database for the given key, which is one of the
-   * keys from View::db_objects()
-   */
-  function _save_rows($key) {
-    $count = 0;
-    foreach ($this->$key as $position => $object) {
-      $object->position = ++$count;
-      $object->vid = $this->vid;
-      $object->save_row();
-    }
-  }
-
-  /**
-   * Delete the view from the database.
-   */
-  function delete($clear = TRUE) {
-    if (empty($this->vid)) {
-      return;
-    }
-
-    db_delete('views_view')
-      ->condition('vid', $this->vid)
-      ->execute();
-    // Delete from all of our subtables as well.
-    foreach ($this->db_objects() as $key => $object) {
-      db_delete('views_'. $key)
-        ->condition('vid', $this->vid)
-        ->execute();
-    }
-
-    cache('cache_views')->delete('views_query:' . $this->name);
-
-    if ($clear) {
-      // Clear caches.
-      views_invalidate_cache();
-    }
-  }
-
-  /**
-   * Export a view as PHP code.
-   */
-  function export($indent = '') {
-    $this->init_display();
-    $this->init_query();
-    $output = '';
-    $output .= $this->export_row('view', $indent);
-    // Set the API version
-    $output .= $indent . '$view->api_version = \'' . views_api_version() . "';\n";
-    $output .= $indent . '$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */' . "\n";
-
-    foreach ($this->display as $id => $display) {
-      $output .= "\n" . $indent . "/* Display: $display->display_title */\n";
-      $output .= $indent . '$handler = $view->new_display(' . ctools_var_export($display->display_plugin, $indent) . ', ' . ctools_var_export($display->display_title, $indent) . ', \'' . $id . "');\n";
-      if (empty($display->handler)) {
-        // @todo -- probably need a method of exporting broken displays as
-        // they may simply be broken because a module is not installed. That
-        // does not invalidate the display.
-        continue;
-      }
-
-      $output .= $display->handler->export_options($indent, '$handler->options');
-    }
-
-    // Give the localization system a chance to export translatables to code.
-    if ($this->init_localization()) {
-      $this->export_locale_strings('export');
-      $translatables = $this->localization_plugin->export_render($indent);
-      if (!empty($translatables)) {
-        $output .= $translatables;
-      }
-    }
-
-    return $output;
-  }
-
-  /**
    * Make a copy of this view that has been sanitized of all database IDs
    * and handlers and other stuff.
    *
diff --git a/lib/Drupal/views/ViewDisplay.php b/lib/Drupal/views/ViewDisplay.php
new file mode 100644
index 0000000..aa8c6cd
--- /dev/null
+++ b/lib/Drupal/views/ViewDisplay.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\views\ViewDisplay.
+ */
+
+namespace Drupal\views;
+
+/**
+ * A display type in a view.
+ *
+ * This is just the database storage mechanism, and isn't terribly important
+ * to the behavior of the display at all.
+ */
+class ViewDisplay {
+
+  /**
+   * The display handler itself, which has all the methods.
+   *
+   * @var views_plugin_display
+   */
+  public $handler;
+
+  /**
+   * Stores all options of the display, like fields, filters etc.
+   *
+   * @var array
+   */
+  public $display_options;
+
+  public function __construct(array $display_options = array()) {
+    $display_options += array(
+      'display_options' => array(),
+      'display_plugin' => NULL,
+      'id' => NULL,
+      'display_title' => '',
+      'position' => NULL,
+    );
+
+    $this->display_options = $display_options['display_options'];
+    $this->display_plugin = $display_options['display_plugin'];
+    $this->id = $display_options['id'];
+    $this->display_title = $display_options['display_title'];
+  }
+
+}
diff --git a/lib/Drupal/views/ViewsDbObject.php b/lib/Drupal/views/ViewStorage.php
similarity index 58%
rename from lib/Drupal/views/ViewsDbObject.php
rename to lib/Drupal/views/ViewStorage.php
index ba3a9a0..5b13d85 100644
--- a/lib/Drupal/views/ViewsDbObject.php
+++ b/lib/Drupal/views/ViewStorage.php
@@ -2,177 +2,47 @@
 
 /**
  * @file
- * Definition of Drupal\views\ViewsDbObject.
+ * Definition of Drupal\views\ViewStorage.
  */
 
 namespace Drupal\views;
 
-/**
- * Base class for views' database objects.
- */
-class ViewsDbObject {
+use Drupal\config\ConfigurableBase;
 
-  public $db_table;
+class ViewStorage extends ConfigurableBase implements ViewStorageInterface {
 
   /**
-   * Initialize this object, setting values from schema defaults.
-   *
-   * @param $init
-   *   If an array, this is a set of values from db_fetch_object to
-   *   load. Otherwse, if TRUE values will be filled in from schema
-   *   defaults.
+   * Overrides Drupal\entity\StorableInterface::id().
    */
-  function init($init = TRUE) {
-    if (is_array($init)) {
-      return $this->load_row($init);
-    }
-
-    if (!$init) {
-      return;
-    }
-
-    $schema = drupal_get_schema($this->db_table);
-
-    if (!$schema) {
-      return;
-    }
-
-    // Go through our schema and build correlations.
-    foreach ($schema['fields'] as $field => $info) {
-      if ($info['type'] == 'serial') {
-        $this->$field = NULL;
-      }
-      if (!isset($this->$field)) {
-        if (!empty($info['serialize']) && isset($info['serialized default'])) {
-          $this->$field = unserialize($info['serialized default']);
-        }
-        elseif (isset($info['default'])) {
-          $this->$field = $info['default'];
-        }
-        else {
-          $this->$field = '';
-        }
-      }
-    }
+  public function id() {
+    return $this->name;
   }
 
   /**
-   * Write the row to the database.
-   *
-   * @param $update
-   *   If true this will be an UPDATE query. Otherwise it will be an INSERT.
+   * Implements Drupal\views\ViewStorageInterface::enable().
    */
-  function save_row($update = NULL) {
-    $fields = $defs = $values = $serials = array();
-    $schema = drupal_get_schema($this->db_table);
-
-    // Go through our schema and build correlations.
-    foreach ($schema['fields'] as $field => $info) {
-      // special case -- skip serial types if we are updating.
-      if ($info['type'] == 'serial') {
-        $serials[] = $field;
-        continue;
-      }
-      elseif ($info['type'] == 'int') {
-        $this->$field = (int) $this->$field;
-      }
-      $fields[$field] = empty($info['serialize']) ? $this->$field : serialize($this->$field);
-    }
-    if (!$update) {
-      $query = db_insert($this->db_table);
-    }
-    else {
-      $query = db_update($this->db_table)
-        ->condition($update, $this->$update);
-    }
-    $return = $query
-      ->fields($fields)
-      ->execute();
-
-    if ($serials && !$update) {
-      // get last insert ids and fill them in.
-      // Well, one ID.
-      foreach ($serials as $field) {
-        $this->$field = $return;
-      }
-    }
+  public function enable() {
+    $this->disabled = FALSE;
   }
 
   /**
-   * Load the object with a row from the database.
-   *
-   * This method is separate from the constructor in order to give us
-   * more flexibility in terms of how the view object is built in different
-   * contexts.
-   *
-   * @param $data
-   *   An object from db_fetch_object. It should contain all of the fields
-   *   that are in the schema.
+   * Implements Drupal\views\ViewStorageInterface::disable().
    */
-  function load_row($data) {
-    $schema = drupal_get_schema($this->db_table);
-
-    // Go through our schema and build correlations.
-    foreach ($schema['fields'] as $field => $info) {
-      $this->$field = empty($info['serialize']) ? $data->$field : unserialize($data->$field);
-    }
+  public function disable() {
+    $this->disabled = TRUE;
   }
 
   /**
-   * Export a loaded row, such as an argument, field or the view itself to PHP code.
-   *
-   * @param $identifier
-   *   The variable to assign the PHP code for this object to.
-   * @param $indent
-   *   An optional indentation for prettifying nested code.
+   * Implements Drupal\views\ViewStorageInterface::isEnabled().
    */
-  function export_row($identifier = NULL, $indent = '') {
-    // @todo replace with http://drupal.org/node/1741154.
-    ctools_include('export');
-
-    if (!$identifier) {
-      $identifier = $this->db_table;
-    }
-    $schema = drupal_get_schema($this->db_table);
-
-    $output = $indent . '$' . $identifier . ' = new ' . get_class($this) . "();\n";
-    // Go through our schema and build correlations.
-    foreach ($schema['fields'] as $field => $info) {
-      if (!empty($info['no export'])) {
-        continue;
-      }
-      if (!isset($this->$field)) {
-        if (isset($info['default'])) {
-          $this->$field = $info['default'];
-        }
-        else {
-          $this->$field = '';
-        }
-
-        // serialized defaults must be set as serialized.
-        if (isset($info['serialize'])) {
-          $this->$field = unserialize($this->$field);
-        }
-      }
-      $value = $this->$field;
-      if ($info['type'] == 'int') {
-        if (isset($info['size']) && $info['size'] == 'tiny') {
-          $value = (bool) $value;
-        }
-        else {
-          $value = (int) $value;
-        }
-      }
-
-      $output .= $indent . '$' . $identifier . '->' . $field . ' = ' . ctools_var_export($value, $indent) . ";\n";
-    }
-    return $output;
+  public function isEnabled() {
+    return !$this->disabled;
   }
 
   /**
    * Add a new display handler to the view, automatically creating an id.
    *
-   * @param $type
+   * @param $plugin_id
    *   The plugin type from the views plugin data. Defaults to 'page'.
    * @param $title
    *   The title of the display; optional, may be filled in from default.
@@ -182,19 +52,23 @@ class ViewsDbObject {
    *   The key to the display in $view->display, so that the new display
    *   can be easily located.
    */
-  function add_display($type = 'page', $title = NULL, $id = NULL) {
-    if (empty($type)) {
+  function add_display($plugin_id = 'page', $title = NULL, $id = NULL) {
+    if (empty($plugin_id)) {
       return FALSE;
     }
 
-    $plugin = views_fetch_plugin_data('display', $type);
+    $plugin = views_fetch_plugin_data('display', $plugin_id);
     if (empty($plugin)) {
       $plugin['title'] = t('Broken');
     }
 
 
     if (empty($id)) {
-      $id = $this->generate_display_id($type);
+      $id = $this->generate_display_id($plugin_id);
+
+      // Generate a unique human readable name.
+      // Therefore find out how often the display_plugin already got used,
+      // which is stored at the end of the $id, for example page_1.
       if ($id !== 'default') {
         preg_match("/[0-9]+/", $id, $count);
         $count = $count[0];
@@ -204,6 +78,8 @@ class ViewsDbObject {
       }
 
       if (empty($title)) {
+        // If we had more then one instance already attach the count,
+        // so you end up with "Page" and "Page 2" for example.
         if ($count > 1) {
           $title = $plugin['title'] . ' ' . $count;
         }
@@ -213,9 +89,14 @@ class ViewsDbObject {
       }
     }
 
+    $display_options = array(
+      'display_plugin' => $plugin_id,
+      'id' => $id,
+      'display_title' => $title,
+    );
+
     // Create the new display object
-    $display = new ViewsDisplay();
-    $display->options($type, $id, $title);
+    $display = new ViewDisplay($display_options);
 
     // Add the new display object to the view.
     $this->display[$id] = $display;
diff --git a/lib/Drupal/views/ViewStorageController.php b/lib/Drupal/views/ViewStorageController.php
new file mode 100644
index 0000000..05d19ee
--- /dev/null
+++ b/lib/Drupal/views/ViewStorageController.php
@@ -0,0 +1,143 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\views\ViewStorageController.
+ */
+
+namespace Drupal\views;
+
+use Drupal\config\ConfigStorageController;
+use Drupal\entity\StorableInterface;
+
+class ViewStorageController extends ConfigStorageController {
+
+  /**
+   * Overrides Drupal\config\ConfigStorageController::attachLoad();
+   */
+  protected function attachLoad(&$queried_entities, $revision_id = FALSE) {
+    foreach ($queried_entities as $id => $entity) {
+      $this->attachDisplays($entity);
+    }
+  }
+
+  /**
+   * Overrides Drupal\config\ConfigStorageController::save().
+   *
+   * This currently replaces the reflection code with a static array of
+   * properties to be set on the config object. This can be removed
+   * when the view storage is isolated so the ReflectionClass can work.
+   */
+  public function save(StorableInterface $entity) {
+    $prefix = $this->entityInfo['config prefix'] . '.';
+
+    // Load the stored entity, if any.
+    if ($entity->getOriginalID()) {
+      $id = $entity->getOriginalID();
+    }
+    else {
+      $id = $entity->id();
+    }
+    $config = config($prefix . $id);
+    $config->setName($prefix . $entity->id());
+
+    if (!$config->isNew() && !isset($entity->original)) {
+      $entity->original = entity_load_unchanged($this->entityType, $id);
+    }
+
+    $this->preSave($entity);
+    $this->invokeHook('presave', $entity);
+
+    // @todo: This temp measure will be removed once we have a better way or
+    // separation of storage and the executed view.
+    $config_properties = array (
+      'disabled',
+      'api_version',
+      'name',
+      'description',
+      'tag',
+      'base_table',
+      'human_name',
+      'core',
+      'display',
+    );
+
+    foreach ($config_properties as $property) {
+      if ($property == 'display') {
+        $displays = array();
+        foreach ($entity->display as $key => $display) {
+          $displays[$key] = array(
+            'display_options' => $display->display_options,
+            'display_plugin' => $display->display_plugin,
+            'id' => $display->id,
+            'display_title' => $display->display_title,
+            'position' => isset($display->position) ? $display->position : 0,
+          );
+        }
+        $config->set('display', $displays);
+      }
+      else {
+        $config->set($property, $entity->$property);
+      }
+    }
+
+    if (!$config->isNew()) {
+      $return = SAVED_NEW;
+      $config->save();
+      $this->postSave($entity, TRUE);
+      $this->invokeHook('update', $entity);
+    }
+    else {
+      $return = SAVED_UPDATED;
+      $config->save();
+      $entity->enforceIsNew(FALSE);
+      $this->postSave($entity, FALSE);
+      $this->invokeHook('insert', $entity);
+    }
+
+    unset($entity->original);
+
+    return $return;
+  }
+
+  /**
+   * Overrides Drupal\config\ConfigStorageController::create().
+   */
+  public function create(array $values) {
+    // If there is no information about displays available add at least the
+    // default display.
+    $values += array(
+      'display' => array(
+        'default' => array(
+          'display_plugin' => 'default',
+          'id' => 'default',
+          'display_title' => 'Master',
+        ),
+      )
+    );
+
+    $entity = parent::create($values);
+
+    $this->attachDisplays($entity);
+    return $entity;
+  }
+
+  /**
+   * Attaches an array of ViewDisplay objects to the view display property.
+   *
+   * @param Drupal\entity\StorableInterface $entity
+   */
+  protected function attachDisplays(StorableInterface $entity) {
+    if (isset($entity->display) && is_array($entity->display)) {
+      $displays = array();
+
+      foreach ($entity->get('display') as $key => $options) {
+        // Create a ViewDisplay object using the display options.
+        $displays[$key] = new ViewDisplay($options);
+      }
+
+      $entity->set('display', $displays);
+    }
+  }
+
+}
diff --git a/lib/Drupal/views/ViewStorageInterface.php b/lib/Drupal/views/ViewStorageInterface.php
new file mode 100644
index 0000000..1eef099
--- /dev/null
+++ b/lib/Drupal/views/ViewStorageInterface.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * Definition of Drupal\views\ViewStorageInterface.
+ */
+
+namespace Drupal\views;
+
+use Drupal\config\ConfigurableInterface;
+
+/**
+ * Defines an interface for View storage classes.
+ */
+interface ViewStorageInterface extends ConfigurableInterface {
+
+  /**
+   * Sets the configurable entity status to enabled.
+   */
+  public function enable();
+
+  /**
+   * Sets the configurable entity status to disabled.
+   */
+  public function disable();
+
+  /**
+   * Returns whether the configurable entity is enabled.
+   *
+   * @return bool
+   */
+  public function isEnabled();
+
+}
diff --git a/lib/Drupal/views/ViewsDisplay.php b/lib/Drupal/views/ViewsDisplay.php
deleted file mode 100644
index af7f47a..0000000
--- a/lib/Drupal/views/ViewsDisplay.php
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\views\ViewsDisplay.
- */
-
-namespace Drupal\views;
-
-/**
- * A display type in a view.
- *
- * This is just the database storage mechanism, and isn't terribly important
- * to the behavior of the display at all.
- */
-class ViewsDisplay extends ViewsDbObject {
-
-  /**
-   * The display handler itself, which has all the methods.
-   *
-   * @var views_plugin_display
-   */
-  var $handler;
-
-  /**
-   * Stores all options of the display, like fields, filters etc.
-   *
-   * @var array
-   */
-  var $display_options;
-
-  var $db_table = 'views_display';
-
-  function __construct($init = TRUE) {
-    parent::init($init);
-  }
-
-  function options($type, $id, $title) {
-    $this->display_plugin = $type;
-    $this->id = $id;
-    $this->display_title = $title;
-  }
-
-}
diff --git a/modules/comment.views_default.inc b/modules/comment.views_default.inc
deleted file mode 100644
index 1609cae..0000000
--- a/modules/comment.views_default.inc
+++ /dev/null
@@ -1,283 +0,0 @@
-<?php
-
-/**
- * @file
- * Bulk export of views_default objects generated by Bulk export module.
- */
-
-/**
- * Implements hook_views_default_views().
- */
-function comment_views_default_views() {
-  $views = array();
-
-  $view = new Drupal\views\View();
-  $view->name = 'comments_recent';
-  $view->description = 'Contains a block and a page to list recent comments; the block will automatically link to the page, which displays the comment body as well as a link to the node.';
-  $view->tag = 'default';
-  $view->base_table = 'comment';
-  $view->human_name = 'Recent comments';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['title'] = 'Recent comments';
-  $handler->display->display_options['use_more'] = TRUE;
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'some';
-  $handler->display->display_options['pager']['options']['items_per_page'] = 5;
-  $handler->display->display_options['style_plugin'] = 'html_list';
-  $handler->display->display_options['row_plugin'] = 'fields';
-  /* Relationship: Comment: Content */
-  $handler->display->display_options['relationships']['nid']['id'] = 'nid';
-  $handler->display->display_options['relationships']['nid']['table'] = 'comment';
-  $handler->display->display_options['relationships']['nid']['field'] = 'nid';
-  /* Field: Comment: Title */
-  $handler->display->display_options['fields']['subject']['id'] = 'subject';
-  $handler->display->display_options['fields']['subject']['table'] = 'comment';
-  $handler->display->display_options['fields']['subject']['field'] = 'subject';
-  $handler->display->display_options['fields']['subject']['label'] = '';
-  $handler->display->display_options['fields']['subject']['link_to_comment'] = 1;
-  /* Field: Comment: Updated date */
-  $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['table'] = 'comment';
-  $handler->display->display_options['fields']['timestamp']['field'] = 'changed';
-  $handler->display->display_options['fields']['timestamp']['label'] = '';
-  $handler->display->display_options['fields']['timestamp']['date_format'] = 'time ago';
-  /* Sort criterion: Comment: Updated date */
-  $handler->display->display_options['sorts']['timestamp']['id'] = 'timestamp';
-  $handler->display->display_options['sorts']['timestamp']['table'] = 'comment';
-  $handler->display->display_options['sorts']['timestamp']['field'] = 'changed';
-  $handler->display->display_options['sorts']['timestamp']['order'] = 'DESC';
-  /* Filter criterion: Content: Published or admin */
-  $handler->display->display_options['filters']['status_extra']['id'] = 'status_extra';
-  $handler->display->display_options['filters']['status_extra']['table'] = 'node';
-  $handler->display->display_options['filters']['status_extra']['field'] = 'status_extra';
-  $handler->display->display_options['filters']['status_extra']['relationship'] = 'nid';
-  $handler->display->display_options['filters']['status_extra']['group'] = 0;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page');
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'html_list';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title' => 'title',
-    'timestamp' => 'timestamp',
-  );
-  $handler->display->display_options['row_options']['separator'] = '&nbsp;';
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['relationship'] = 'nid';
-  $handler->display->display_options['fields']['title']['label'] = 'Reply to';
-  $handler->display->display_options['fields']['title']['link_to_node'] = 1;
-  /* Field: Comment: Updated date */
-  $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['table'] = 'comment';
-  $handler->display->display_options['fields']['timestamp']['field'] = 'changed';
-  $handler->display->display_options['fields']['timestamp']['label'] = '';
-  $handler->display->display_options['fields']['timestamp']['date_format'] = 'time ago';
-  /* Field: Comment: Title */
-  $handler->display->display_options['fields']['subject']['id'] = 'subject';
-  $handler->display->display_options['fields']['subject']['table'] = 'comment';
-  $handler->display->display_options['fields']['subject']['field'] = 'subject';
-  $handler->display->display_options['fields']['subject']['label'] = '';
-  $handler->display->display_options['fields']['subject']['link_to_comment'] = 1;
-  /* Field: Comment: Comment */
-  $handler->display->display_options['fields']['comment']['id'] = 'comment';
-  $handler->display->display_options['fields']['comment']['table'] = 'field_data_comment_body';
-  $handler->display->display_options['fields']['comment']['field'] = 'comment_body';
-  $handler->display->display_options['fields']['comment']['label'] = '';
-  $handler->display->display_options['path'] = 'comments/recent';
-
-  /* Display: Block */
-  $handler = $view->new_display('block', 'Block', 'block');
-  $translatables['comments_recent'] = array(
-    t('Master'),
-    t('Recent comments'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Content'),
-    t('Page'),
-    t('Reply to'),
-    t('Block'),
-  );
-
-  $views['comments_recent'] = $view;
-
-  $view = new Drupal\views\View();
-  $view->name = 'tracker';
-  $view->description = 'Shows all new activity on system.';
-  $view->tag = 'default';
-  $view->base_table = 'node';
-  $view->human_name = 'Tracker';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['title'] = 'Recent posts';
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '25';
-  $handler->display->display_options['style_plugin'] = 'table';
-  $handler->display->display_options['style_options']['columns'] = array(
-    'type' => 'type',
-    'title' => 'title',
-    'name' => 'name',
-    'comment_count' => 'comment_count',
-    'last_comment_timestamp' => 'last_comment_timestamp',
-    'timestamp' => 'title',
-    'new_comments' => 'comment_count',
-  );
-  $handler->display->display_options['style_options']['default'] = 'last_comment_timestamp';
-  $handler->display->display_options['style_options']['info'] = array(
-    'type' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'title' => array(
-      'sortable' => 1,
-      'separator' => '&nbsp;',
-    ),
-    'name' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'comment_count' => array(
-      'sortable' => 1,
-      'separator' => '<br />',
-    ),
-    'last_comment_timestamp' => array(
-      'sortable' => 1,
-      'separator' => '&nbsp;',
-    ),
-    'timestamp' => array(
-      'separator' => '',
-    ),
-    'new_comments' => array(
-      'separator' => '',
-    ),
-  );
-  $handler->display->display_options['style_options']['override'] = 1;
-  $handler->display->display_options['style_options']['order'] = 'desc';
-  /* Relationship: Content: Author */
-  $handler->display->display_options['relationships']['uid']['id'] = 'uid';
-  $handler->display->display_options['relationships']['uid']['table'] = 'node';
-  $handler->display->display_options['relationships']['uid']['field'] = 'uid';
-  /* Field: Content: Type */
-  $handler->display->display_options['fields']['type']['id'] = 'type';
-  $handler->display->display_options['fields']['type']['table'] = 'node';
-  $handler->display->display_options['fields']['type']['field'] = 'type';
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  /* Field: User: Name */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'users';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['relationship'] = 'uid';
-  $handler->display->display_options['fields']['name']['label'] = 'Author';
-  /* Field: Content: Comment count */
-  $handler->display->display_options['fields']['comment_count']['id'] = 'comment_count';
-  $handler->display->display_options['fields']['comment_count']['table'] = 'node_comment_statistics';
-  $handler->display->display_options['fields']['comment_count']['field'] = 'comment_count';
-  $handler->display->display_options['fields']['comment_count']['label'] = 'Replies';
-  /* Field: Content: Last comment time */
-  $handler->display->display_options['fields']['last_comment_timestamp']['id'] = 'last_comment_timestamp';
-  $handler->display->display_options['fields']['last_comment_timestamp']['table'] = 'node_comment_statistics';
-  $handler->display->display_options['fields']['last_comment_timestamp']['field'] = 'last_comment_timestamp';
-  $handler->display->display_options['fields']['last_comment_timestamp']['label'] = 'Last Post';
-  /* Field: Content: Has new content */
-  $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['table'] = 'history';
-  $handler->display->display_options['fields']['timestamp']['field'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['label'] = '';
-  $handler->display->display_options['fields']['timestamp']['link_to_node'] = 0;
-  $handler->display->display_options['fields']['timestamp']['comments'] = 1;
-  /* Field: Content: New comments */
-  $handler->display->display_options['fields']['new_comments']['id'] = 'new_comments';
-  $handler->display->display_options['fields']['new_comments']['table'] = 'node';
-  $handler->display->display_options['fields']['new_comments']['field'] = 'new_comments';
-  $handler->display->display_options['fields']['new_comments']['label'] = '';
-  $handler->display->display_options['fields']['new_comments']['hide_empty'] = TRUE;
-  $handler->display->display_options['fields']['new_comments']['suffix'] = ' new';
-  $handler->display->display_options['fields']['new_comments']['link_to_comment'] = 1;
-  /* Sort criterion: Content: Last comment time */
-  $handler->display->display_options['sorts']['last_comment_timestamp']['id'] = 'last_comment_timestamp';
-  $handler->display->display_options['sorts']['last_comment_timestamp']['table'] = 'node_comment_statistics';
-  $handler->display->display_options['sorts']['last_comment_timestamp']['field'] = 'last_comment_timestamp';
-  /* Contextual filter: Content: User posted or commented */
-  $handler->display->display_options['arguments']['uid_touch']['id'] = 'uid_touch';
-  $handler->display->display_options['arguments']['uid_touch']['table'] = 'node';
-  $handler->display->display_options['arguments']['uid_touch']['field'] = 'uid_touch';
-  $handler->display->display_options['arguments']['uid_touch']['exception']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['uid_touch']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['uid_touch']['title'] = 'Recent posts for %1';
-  $handler->display->display_options['arguments']['uid_touch']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['uid_touch']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['uid_touch']['specify_validation'] = 1;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = '1';
-  $handler->display->display_options['filters']['status']['group'] = 0;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page');
-  $handler->display->display_options['path'] = 'tracker';
-  $handler->display->display_options['menu']['type'] = 'normal';
-  $handler->display->display_options['menu']['title'] = 'Recent posts';
-  $translatables['tracker'] = array(
-    t('Master'),
-    t('Recent posts'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Items per page'),
-    t('- All -'),
-    t('Offset'),
-    t('Type'),
-    t('Title'),
-    t('Author'),
-    t('Replies'),
-    t('.'),
-    t(','),
-    t('Last Post'),
-    t(' new'),
-    t('All'),
-    t('Recent posts for %1'),
-    t('Page'),
-  );
-
-  $views['tracker'] = $view;
-
-  return $views;
-}
diff --git a/modules/node.views_default.inc b/modules/node.views_default.inc
deleted file mode 100644
index 4d6c827..0000000
--- a/modules/node.views_default.inc
+++ /dev/null
@@ -1,315 +0,0 @@
-<?php
-
-/**
- * @file
- * Bulk export of views_default objects generated by Bulk export module.
- */
-
-/**
- * Implementation of hook_views_default_views()
- */
-function node_views_default_views() {
-  $views = array();
-
-  $view = new Drupal\views\View();
-  $view->name = 'archive';
-  $view->description = 'Display a list of months that link to content for that month.';
-  $view->tag = 'default';
-  $view->base_table = 'node';
-  $view->human_name = 'Archive';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['title'] = 'Monthly archive';
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'node';
-  /* Sort criterion: Content: Post date */
-  $handler->display->display_options['sorts']['created']['id'] = 'created';
-  $handler->display->display_options['sorts']['created']['table'] = 'node';
-  $handler->display->display_options['sorts']['created']['field'] = 'created';
-  $handler->display->display_options['sorts']['created']['order'] = 'DESC';
-  /* Contextual filter: Content: Created year + month */
-  $handler->display->display_options['arguments']['created_year_month']['id'] = 'created_year_month';
-  $handler->display->display_options['arguments']['created_year_month']['table'] = 'node';
-  $handler->display->display_options['arguments']['created_year_month']['field'] = 'created_year_month';
-  $handler->display->display_options['arguments']['created_year_month']['default_action'] = 'summary';
-  $handler->display->display_options['arguments']['created_year_month']['exception']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['created_year_month']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['created_year_month']['title'] = '%1';
-  $handler->display->display_options['arguments']['created_year_month']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['created_year_month']['summary']['sort_order'] = 'desc';
-  $handler->display->display_options['arguments']['created_year_month']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['created_year_month']['summary_options']['override'] = TRUE;
-  $handler->display->display_options['arguments']['created_year_month']['summary_options']['items_per_page'] = '30';
-  $handler->display->display_options['arguments']['created_year_month']['specify_validation'] = 1;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 0;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page');
-  $handler->display->display_options['path'] = 'archive';
-
-  /* Display: Block */
-  $handler = $view->new_display('block', 'Block', 'block');
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Content: Created year + month */
-  $handler->display->display_options['arguments']['created_year_month']['id'] = 'created_year_month';
-  $handler->display->display_options['arguments']['created_year_month']['table'] = 'node';
-  $handler->display->display_options['arguments']['created_year_month']['field'] = 'created_year_month';
-  $handler->display->display_options['arguments']['created_year_month']['default_action'] = 'summary';
-  $handler->display->display_options['arguments']['created_year_month']['exception']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['created_year_month']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['created_year_month']['title'] = '%1';
-  $handler->display->display_options['arguments']['created_year_month']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['created_year_month']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['created_year_month']['summary_options']['items_per_page'] = '30';
-  $handler->display->display_options['arguments']['created_year_month']['specify_validation'] = 1;
-  $translatables['archive'] = array(
-    t('Master'),
-    t('Monthly archive'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Items per page'),
-    t('- All -'),
-    t('Offset'),
-    t('All'),
-    t('%1'),
-    t('Page'),
-    t('Block'),
-  );
-
-  $views['archive'] = $view;
-
-  $view = new Drupal\views\View();
-  $view->name = 'frontpage';
-  $view->description = 'Emulates the default Drupal front page; you may set the default home page path to this view to make it your front page.';
-  $view->tag = 'default';
-  $view->base_table = 'node';
-  $view->human_name = 'Front page';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'node';
-  $handler->display->display_options['row_options']['links'] = 1;
-  /* Sort criterion: Content: Sticky */
-  $handler->display->display_options['sorts']['sticky']['id'] = 'sticky';
-  $handler->display->display_options['sorts']['sticky']['table'] = 'node';
-  $handler->display->display_options['sorts']['sticky']['field'] = 'sticky';
-  $handler->display->display_options['sorts']['sticky']['order'] = 'DESC';
-  /* Sort criterion: Content: Post date */
-  $handler->display->display_options['sorts']['created']['id'] = 'created';
-  $handler->display->display_options['sorts']['created']['table'] = 'node';
-  $handler->display->display_options['sorts']['created']['field'] = 'created';
-  $handler->display->display_options['sorts']['created']['order'] = 'DESC';
-  /* Filter criterion: Content: Promoted to front page */
-  $handler->display->display_options['filters']['promote']['id'] = 'promote';
-  $handler->display->display_options['filters']['promote']['table'] = 'node';
-  $handler->display->display_options['filters']['promote']['field'] = 'promote';
-  $handler->display->display_options['filters']['promote']['value'] = '1';
-  $handler->display->display_options['filters']['promote']['group'] = 0;
-  $handler->display->display_options['filters']['promote']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = '1';
-  $handler->display->display_options['filters']['status']['group'] = 0;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page');
-  $handler->display->display_options['path'] = 'frontpage';
-
-  /* Display: Feed */
-  $handler = $view->new_display('feed', 'Feed', 'feed');
-  $handler->display->display_options['defaults']['title'] = FALSE;
-  $handler->display->display_options['title'] = 'Front page feed';
-  $handler->display->display_options['pager']['type'] = 'some';
-  $handler->display->display_options['style_plugin'] = 'rss';
-  $handler->display->display_options['row_plugin'] = 'node_rss';
-  $handler->display->display_options['path'] = 'rss.xml';
-  $handler->display->display_options['displays'] = array(
-    'default' => 'default',
-    'page' => 'page',
-  );
-  $handler->display->display_options['sitename_title'] = '1';
-  $translatables['frontpage'] = array(
-    t('Master'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Items per page'),
-    t('- All -'),
-    t('Offset'),
-    t('Page'),
-    t('Feed'),
-    t('Front page feed'),
-  );
-
-  $views['frontpage'] = $view;
-
-  $view = new Drupal\views\View();
-  $view->name = 'glossary';
-  $view->description = 'A list of all content, by letter.';
-  $view->tag = 'default';
-  $view->base_table = 'node';
-  $view->human_name = 'Glossary';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['use_ajax'] = TRUE;
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = 36;
-  $handler->display->display_options['style_plugin'] = 'table';
-  $handler->display->display_options['style_options']['columns'] = array(
-    'title' => 'title',
-    'name' => 'name',
-    'changed' => 'changed',
-  );
-  $handler->display->display_options['style_options']['default'] = 'title';
-  $handler->display->display_options['style_options']['info'] = array(
-    'title' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'name' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-    'changed' => array(
-      'sortable' => 1,
-      'separator' => '',
-    ),
-  );
-  $handler->display->display_options['style_options']['override'] = 1;
-  $handler->display->display_options['style_options']['sticky'] = 0;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['link_to_node'] = 1;
-  /* Field: User: Name */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'users';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['label'] = 'Author';
-  $handler->display->display_options['fields']['name']['link_to_user'] = 1;
-  /* Field: Content: Updated date */
-  $handler->display->display_options['fields']['changed']['id'] = 'changed';
-  $handler->display->display_options['fields']['changed']['table'] = 'node';
-  $handler->display->display_options['fields']['changed']['field'] = 'changed';
-  $handler->display->display_options['fields']['changed']['label'] = 'Last update';
-  $handler->display->display_options['fields']['changed']['date_format'] = 'large';
-  /* Contextual filter: Content: Title */
-  $handler->display->display_options['arguments']['title']['id'] = 'title';
-  $handler->display->display_options['arguments']['title']['table'] = 'node';
-  $handler->display->display_options['arguments']['title']['field'] = 'title';
-  $handler->display->display_options['arguments']['title']['default_action'] = 'default';
-  $handler->display->display_options['arguments']['title']['exception']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['title']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['title']['default_argument_options']['argument'] = 'a';
-  $handler->display->display_options['arguments']['title']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['title']['specify_validation'] = 1;
-  $handler->display->display_options['arguments']['title']['glossary'] = 1;
-  $handler->display->display_options['arguments']['title']['limit'] = '1';
-  $handler->display->display_options['arguments']['title']['case'] = 'upper';
-  $handler->display->display_options['arguments']['title']['path_case'] = 'lower';
-  $handler->display->display_options['arguments']['title']['transform_dash'] = 0;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page');
-  $handler->display->display_options['path'] = 'glossary';
-  $handler->display->display_options['menu']['type'] = 'normal';
-  $handler->display->display_options['menu']['title'] = 'Glossary';
-  $handler->display->display_options['menu']['weight'] = '0';
-
-  /* Display: Attachment */
-  $handler = $view->new_display('attachment', 'Attachment', 'attachment');
-  $handler->display->display_options['pager']['type'] = 'none';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Content: Title */
-  $handler->display->display_options['arguments']['title']['id'] = 'title';
-  $handler->display->display_options['arguments']['title']['table'] = 'node';
-  $handler->display->display_options['arguments']['title']['field'] = 'title';
-  $handler->display->display_options['arguments']['title']['default_action'] = 'summary';
-  $handler->display->display_options['arguments']['title']['exception']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['title']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['title']['default_argument_options']['argument'] = 'a';
-  $handler->display->display_options['arguments']['title']['summary']['format'] = 'unformatted_summary';
-  $handler->display->display_options['arguments']['title']['summary_options']['items_per_page'] = '25';
-  $handler->display->display_options['arguments']['title']['summary_options']['inline'] = 1;
-  $handler->display->display_options['arguments']['title']['summary_options']['separator'] = ' | ';
-  $handler->display->display_options['arguments']['title']['specify_validation'] = 1;
-  $handler->display->display_options['arguments']['title']['glossary'] = 1;
-  $handler->display->display_options['arguments']['title']['limit'] = '1';
-  $handler->display->display_options['arguments']['title']['case'] = 'upper';
-  $handler->display->display_options['arguments']['title']['path_case'] = 'lower';
-  $handler->display->display_options['arguments']['title']['transform_dash'] = 0;
-  $handler->display->display_options['displays'] = array(
-    'default' => 'default',
-    'page' => 'page',
-  );
-  $handler->display->display_options['inherit_arguments'] = 0;
-  $translatables['glossary'] = array(
-    t('Master'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Items per page'),
-    t('- All -'),
-    t('Offset'),
-    t('Title'),
-    t('Author'),
-    t('Last update'),
-    t('All'),
-    t('Page'),
-    t('Attachment'),
-  );
-
-  $views['glossary'] = $view;
-
-  return $views;
-}
diff --git a/modules/node.views_template.inc b/modules/node.views_template.inc
index ba52b04..a564a87 100644
--- a/modules/node.views_template.inc
+++ b/modules/node.views_template.inc
@@ -10,7 +10,7 @@ function node_views_templates() {
   if (variable_get('install_profile', 'standard') != 'standard') {
     return array();
   }
-  $view = new Drupal\views\View();
+  $view = new Drupal\views\View(array(), 'view');
   $view->name = 'image_gallery';
   $view->description = 'Shows all images which was uploaded on the "field_image" field';
   $view->tag = '';
diff --git a/modules/search.views_default.inc b/modules/search.views_default.inc
deleted file mode 100644
index 7567703..0000000
--- a/modules/search.views_default.inc
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-
-/**
- * @file
- * Bulk export of views_default objects generated by Bulk export module.
- */
-
-/**
- * Implementation of hook_views_default_views()
- */
-function search_views_default_views() {
-  $views = array();
-
-  $view = new Drupal\views\View();
-  $view->name = 'backlinks';
-  $view->description = 'Displays a list of nodes that link to the node, using the search backlinks table.';
-  $view->tag = 'default';
-  $view->base_table = 'node';
-  $view->human_name = 'Backlinks';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = 30;
-  $handler->display->display_options['style_plugin'] = 'html_list';
-  $handler->display->display_options['style_options']['type'] = 'ol';
-  $handler->display->display_options['row_plugin'] = 'fields';
-  /* No results behavior: Global: Text area */
-  $handler->display->display_options['empty']['text']['id'] = 'area';
-  $handler->display->display_options['empty']['text']['table'] = 'views';
-  $handler->display->display_options['empty']['text']['field'] = 'area';
-  $handler->display->display_options['empty']['text']['empty'] = FALSE;
-  $handler->display->display_options['empty']['text']['content'] = 'No backlinks found.';
-  $handler->display->display_options['empty']['text']['format'] = '1';
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['link_to_node'] = 1;
-  /* Contextual filter: Search: Links to */
-  $handler->display->display_options['arguments']['nid']['id'] = 'nid';
-  $handler->display->display_options['arguments']['nid']['table'] = 'search_node_links_to';
-  $handler->display->display_options['arguments']['nid']['field'] = 'nid';
-  $handler->display->display_options['arguments']['nid']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['nid']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['nid']['title'] = 'Pages that link to %1';
-  $handler->display->display_options['arguments']['nid']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['nid']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['nid']['specify_validation'] = 1;
-  $handler->display->display_options['arguments']['nid']['validate']['type'] = 'node';
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = 1;
-  $handler->display->display_options['filters']['status']['group'] = 0;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page');
-  $handler->display->display_options['path'] = 'node/%/backlinks';
-  $handler->display->display_options['menu']['type'] = 'tab';
-  $handler->display->display_options['menu']['title'] = 'What links here';
-  $handler->display->display_options['menu']['weight'] = '0';
-
-  /* Display: What links here */
-  $handler = $view->new_display('block', 'What links here', 'block');
-  $handler->display->display_options['defaults']['use_more'] = FALSE;
-  $handler->display->display_options['use_more'] = TRUE;
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'html_list';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['arguments'] = FALSE;
-  /* Contextual filter: Search: Links to */
-  $handler->display->display_options['arguments']['nid']['id'] = 'nid';
-  $handler->display->display_options['arguments']['nid']['table'] = 'search_node_links_to';
-  $handler->display->display_options['arguments']['nid']['field'] = 'nid';
-  $handler->display->display_options['arguments']['nid']['default_action'] = 'default';
-  $handler->display->display_options['arguments']['nid']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['nid']['title'] = 'What links here';
-  $handler->display->display_options['arguments']['nid']['default_argument_type'] = 'node';
-  $handler->display->display_options['arguments']['nid']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['nid']['specify_validation'] = 1;
-  $handler->display->display_options['arguments']['nid']['validate']['type'] = 'node';
-  $translatables['backlinks'] = array(
-    t('Master'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Items per page'),
-    t('- All -'),
-    t('Offset'),
-    t('No backlinks found.'),
-    t('All'),
-    t('Pages that link to %1'),
-    t('Page'),
-    t('What links here'),
-  );
-
-  $views['backlinks'] = $view;
-
-  return $views;
-}
diff --git a/modules/statistics.views_default.inc b/modules/statistics.views_default.inc
deleted file mode 100644
index 55e82af..0000000
--- a/modules/statistics.views_default.inc
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-
-/**
- * @file
- * Bulk export of views_default objects generated by Bulk export module.
- */
-
-/**
- * Implements of hook_views_default_views().
- */
-function statistics_views_default_views() {
-  $views = array();
-
-  $view = new Drupal\views\View();
-  $view->name = 'popular';
-  $view->description = 'Shows the most-viewed nodes on the site. This requires the statistics to be enabled at administer >> reports >> access log settings.';
-  $view->tag = 'default';
-  $view->base_table = 'node';
-  $view->human_name = 'Popular content';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['title'] = 'Popular content';
-  $handler->display->display_options['use_more'] = TRUE;
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '25';
-  $handler->display->display_options['style_plugin'] = 'table';
-  $handler->display->display_options['style_options']['columns'] = array(
-    'type' => 'type',
-    'title' => 'title',
-    'name' => 'name',
-    'timestamp' => 'title',
-    'totalcount' => 'totalcount',
-  );
-  $handler->display->display_options['style_options']['default'] = '-1';
-  $handler->display->display_options['style_options']['info'] = array(
-    'type' => array(
-      'sortable' => 0,
-      'separator' => '',
-    ),
-    'title' => array(
-      'sortable' => 0,
-      'separator' => '',
-    ),
-    'name' => array(
-      'sortable' => 0,
-      'separator' => '',
-    ),
-    'timestamp' => array(
-      'separator' => '',
-    ),
-    'totalcount' => array(
-      'sortable' => 0,
-      'separator' => '',
-    ),
-  );
-  $handler->display->display_options['style_options']['override'] = 0;
-  $handler->display->display_options['style_options']['order'] = 'desc';
-  /* Field: Content: Type */
-  $handler->display->display_options['fields']['type']['id'] = 'type';
-  $handler->display->display_options['fields']['type']['table'] = 'node';
-  $handler->display->display_options['fields']['type']['field'] = 'type';
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  /* Field: User: Name */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'users';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['label'] = 'Author';
-  /* Field: Content: Has new content */
-  $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['table'] = 'history';
-  $handler->display->display_options['fields']['timestamp']['field'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['label'] = '';
-  $handler->display->display_options['fields']['timestamp']['link_to_node'] = 0;
-  $handler->display->display_options['fields']['timestamp']['comments'] = 1;
-  /* Sort criterion: Content statistics: Total views */
-  $handler->display->display_options['sorts']['totalcount']['id'] = 'totalcount';
-  $handler->display->display_options['sorts']['totalcount']['table'] = 'node_counter';
-  $handler->display->display_options['sorts']['totalcount']['field'] = 'totalcount';
-  $handler->display->display_options['sorts']['totalcount']['order'] = 'DESC';
-  /* Filter criterion: Content: Published */
-  $handler->display->display_options['filters']['status']['id'] = 'status';
-  $handler->display->display_options['filters']['status']['table'] = 'node';
-  $handler->display->display_options['filters']['status']['field'] = 'status';
-  $handler->display->display_options['filters']['status']['value'] = '1';
-  $handler->display->display_options['filters']['status']['group'] = 0;
-  $handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
-  /* Filter criterion: Content statistics: Total views */
-  $handler->display->display_options['filters']['totalcount']['id'] = 'totalcount';
-  $handler->display->display_options['filters']['totalcount']['table'] = 'node_counter';
-  $handler->display->display_options['filters']['totalcount']['field'] = 'totalcount';
-  $handler->display->display_options['filters']['totalcount']['operator'] = '>';
-  $handler->display->display_options['filters']['totalcount']['value']['value'] = '0';
-  $handler->display->display_options['filters']['totalcount']['group'] = 0;
-  $handler->display->display_options['filters']['totalcount']['expose']['operator'] = FALSE;
-
-  /* Display: Popular (page) */
-  $handler = $view->new_display('page', 'Popular (page)', 'page');
-  $handler->display->display_options['path'] = 'popular/all';
-  $handler->display->display_options['menu']['type'] = 'default tab';
-  $handler->display->display_options['menu']['title'] = 'Popular content';
-  $handler->display->display_options['menu']['weight'] = '-1';
-  $handler->display->display_options['tab_options']['type'] = 'normal';
-  $handler->display->display_options['tab_options']['title'] = 'Popular content';
-  $handler->display->display_options['tab_options']['weight'] = '';
-
-  /* Display: Today (page) */
-  $handler = $view->new_display('page', 'Today (page)', 'page_1');
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Type */
-  $handler->display->display_options['fields']['type']['id'] = 'type';
-  $handler->display->display_options['fields']['type']['table'] = 'node';
-  $handler->display->display_options['fields']['type']['field'] = 'type';
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  /* Field: User: Name */
-  $handler->display->display_options['fields']['name']['id'] = 'name';
-  $handler->display->display_options['fields']['name']['table'] = 'users';
-  $handler->display->display_options['fields']['name']['field'] = 'name';
-  $handler->display->display_options['fields']['name']['label'] = 'Author';
-  /* Field: Content: Has new content */
-  $handler->display->display_options['fields']['timestamp']['id'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['table'] = 'history';
-  $handler->display->display_options['fields']['timestamp']['field'] = 'timestamp';
-  $handler->display->display_options['fields']['timestamp']['label'] = '';
-  $handler->display->display_options['fields']['timestamp']['link_to_node'] = 0;
-  $handler->display->display_options['fields']['timestamp']['comments'] = 1;
-  /* Field: Content statistics: Views today */
-  $handler->display->display_options['fields']['daycount']['id'] = 'daycount';
-  $handler->display->display_options['fields']['daycount']['table'] = 'node_counter';
-  $handler->display->display_options['fields']['daycount']['field'] = 'daycount';
-  $handler->display->display_options['defaults']['sorts'] = FALSE;
-  /* Sort criterion: Content statistics: Views today */
-  $handler->display->display_options['sorts']['daycount']['id'] = 'daycount';
-  $handler->display->display_options['sorts']['daycount']['table'] = 'node_counter';
-  $handler->display->display_options['sorts']['daycount']['field'] = 'daycount';
-  $handler->display->display_options['sorts']['daycount']['order'] = 'DESC';
-  $handler->display->display_options['path'] = 'popular/today';
-  $handler->display->display_options['menu']['type'] = 'tab';
-  $handler->display->display_options['menu']['title'] = 'Today\'s popular content';
-  $handler->display->display_options['menu']['weight'] = '0';
-  $handler->display->display_options['tab_options']['type'] = 'normal';
-  $handler->display->display_options['tab_options']['title'] = 'Popular content';
-  $handler->display->display_options['tab_options']['weight'] = '0';
-
-  /* Display: Popular (block) */
-  $handler = $view->new_display('block', 'Popular (block)', 'block');
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'html_list';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title' => 'title',
-    'totalcount' => 'totalcount',
-  );
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['link_to_node'] = 1;
-  /* Field: Content statistics: Total views */
-  $handler->display->display_options['fields']['totalcount']['id'] = 'totalcount';
-  $handler->display->display_options['fields']['totalcount']['table'] = 'node_counter';
-  $handler->display->display_options['fields']['totalcount']['field'] = 'totalcount';
-  $handler->display->display_options['fields']['totalcount']['label'] = '';
-  $handler->display->display_options['fields']['totalcount']['prefix'] = ' (';
-  $handler->display->display_options['fields']['totalcount']['suffix'] = ')';
-
-  /* Display: Today (block) */
-  $handler = $view->new_display('block', 'Today (block)', 'block_1');
-  $handler->display->display_options['defaults']['title'] = FALSE;
-  $handler->display->display_options['title'] = 'Today\'s popular content';
-  $handler->display->display_options['defaults']['link_display'] = FALSE;
-  $handler->display->display_options['link_display'] = 'page_1';
-  $handler->display->display_options['defaults']['style_plugin'] = FALSE;
-  $handler->display->display_options['style_plugin'] = 'html_list';
-  $handler->display->display_options['defaults']['style_options'] = FALSE;
-  $handler->display->display_options['defaults']['row_plugin'] = FALSE;
-  $handler->display->display_options['row_plugin'] = 'fields';
-  $handler->display->display_options['row_options']['inline'] = array(
-    'title' => 'title',
-    'daycount' => 'daycount',
-  );
-  $handler->display->display_options['defaults']['row_options'] = FALSE;
-  $handler->display->display_options['defaults']['fields'] = FALSE;
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['label'] = '';
-  $handler->display->display_options['fields']['title']['link_to_node'] = 1;
-  /* Field: Content statistics: Views today */
-  $handler->display->display_options['fields']['daycount']['id'] = 'daycount';
-  $handler->display->display_options['fields']['daycount']['table'] = 'node_counter';
-  $handler->display->display_options['fields']['daycount']['field'] = 'daycount';
-  $handler->display->display_options['fields']['daycount']['label'] = '';
-  $handler->display->display_options['fields']['daycount']['prefix'] = ' (';
-  $handler->display->display_options['fields']['daycount']['suffix'] = ')';
-  $handler->display->display_options['defaults']['sorts'] = FALSE;
-  /* Sort criterion: Content statistics: Views today */
-  $handler->display->display_options['sorts']['daycount']['id'] = 'daycount';
-  $handler->display->display_options['sorts']['daycount']['table'] = 'node_counter';
-  $handler->display->display_options['sorts']['daycount']['field'] = 'daycount';
-  $handler->display->display_options['sorts']['daycount']['order'] = 'DESC';
-  $translatables['popular'] = array(
-    t('Master'),
-    t('Popular content'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Items per page'),
-    t('- All -'),
-    t('Offset'),
-    t('Type'),
-    t('Title'),
-    t('Author'),
-    t('Popular (page)'),
-    t('Today (page)'),
-    t('Views today'),
-    t('.'),
-    t(','),
-    t('Popular (block)'),
-    t(' ('),
-    t(')'),
-    t('Today (block)'),
-    t('Today\'s popular content'),
-  );
-
-  $views['popular'] = $view;
-
-  return $views;
-}
diff --git a/modules/taxonomy.views_default.inc b/modules/taxonomy.views_default.inc
deleted file mode 100644
index 1bcb348..0000000
--- a/modules/taxonomy.views_default.inc
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-
-/**
- * @file
- * Bulk export of views_default objects generated by Bulk export module.
- */
-
-/**
- * Implementation of hook_views_default_views()
- */
-function taxonomy_views_default_views() {
-  $views = array();
-
-  $view = new Drupal\views\View();
-  $view->name = 'taxonomy_term';
-  $view->description = 'A view to emulate Drupal core\'s handling of taxonomy/term.';
-  $view->tag = 'default';
-  $view->base_table = 'node';
-  $view->human_name = 'Taxonomy term';
-  $view->core = 7;
-  $view->api_version = '3.0';
-  $view->disabled = TRUE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'node';
-  /* Sort criterion: Content: Sticky */
-  $handler->display->display_options['sorts']['sticky']['id'] = 'sticky';
-  $handler->display->display_options['sorts']['sticky']['table'] = 'node';
-  $handler->display->display_options['sorts']['sticky']['field'] = 'sticky';
-  $handler->display->display_options['sorts']['sticky']['order'] = 'DESC';
-  /* Sort criterion: Content: Post date */
-  $handler->display->display_options['sorts']['created']['id'] = 'created';
-  $handler->display->display_options['sorts']['created']['table'] = 'node';
-  $handler->display->display_options['sorts']['created']['field'] = 'created';
-  $handler->display->display_options['sorts']['created']['order'] = 'DESC';
-  /* Contextual filter: Content: Has taxonomy term ID (with depth) */
-  $handler->display->display_options['arguments']['term_node_tid_depth']['id'] = 'term_node_tid_depth';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['table'] = 'node';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['field'] = 'term_node_tid_depth';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['default_action'] = 'not found';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['exception']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['term_node_tid_depth']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['term_node_tid_depth']['title'] = '%1';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['specify_validation'] = 1;
-  $handler->display->display_options['arguments']['term_node_tid_depth']['validate']['type'] = 'taxonomy_term';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['depth'] = '0';
-  $handler->display->display_options['arguments']['term_node_tid_depth']['break_phrase'] = 1;
-  /* Contextual filter: Content: Has taxonomy term ID depth modifier */
-  $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['id'] = 'term_node_tid_depth_modifier';
-  $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['table'] = 'node';
-  $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['field'] = 'term_node_tid_depth_modifier';
-  $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['exception']['title_enable'] = 1;
-  $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['default_argument_type'] = 'fixed';
-  $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['summary']['format'] = 'default_summary';
-  $handler->display->display_options['arguments']['term_node_tid_depth_modifier']['specify_validation'] = 1;
-  /* Filter criterion: Content: Published or admin */
-  $handler->display->display_options['filters']['status_extra']['id'] = 'status_extra';
-  $handler->display->display_options['filters']['status_extra']['table'] = 'node';
-  $handler->display->display_options['filters']['status_extra']['field'] = 'status_extra';
-  $handler->display->display_options['filters']['status_extra']['group'] = 0;
-  $handler->display->display_options['filters']['status_extra']['expose']['operator'] = FALSE;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page');
-  $handler->display->display_options['path'] = 'taxonomy/term/%';
-
-  /* Display: Feed */
-  $handler = $view->new_display('feed', 'Feed', 'feed');
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = 15;
-  $handler->display->display_options['style_plugin'] = 'rss';
-  $handler->display->display_options['row_plugin'] = 'node_rss';
-  $handler->display->display_options['path'] = 'taxonomy/term/%/%/feed';
-  $handler->display->display_options['displays'] = array(
-    'page' => 'page',
-    'default' => 0,
-  );
-  $translatables['taxonomy_term'] = array(
-    t('Master'),
-    t('more'),
-    t('Apply'),
-    t('Reset'),
-    t('Sort by'),
-    t('Asc'),
-    t('Desc'),
-    t('Items per page'),
-    t('- All -'),
-    t('Offset'),
-    t('All'),
-    t('%1'),
-    t('Page'),
-    t('Feed'),
-  );
-
-  $views['taxonomy_term'] = $view;
-
-  return $views;
-}
diff --git a/plugins/export_ui/views_ui.class.php b/plugins/export_ui/views_ui.class.php
index f8f1f1c..eb334a3 100644
--- a/plugins/export_ui/views_ui.class.php
+++ b/plugins/export_ui/views_ui.class.php
@@ -361,7 +361,13 @@ class views_ui extends ctools_export_ui {
   }
 
   function set_item_state($state, $js, $input, $item) {
-    ctools_export_set_object_status($item, $state);
+    if (!$state) {
+      $item->enable();
+    }
+    else {
+      $item->disable();
+    }
+    $item->save();
     menu_router_rebuild();
 
     if (!$js) {
diff --git a/tests/views_test/config/views.view.test_argument_default_current_user.yml b/tests/views_test/config/views.view.test_argument_default_current_user.yml
new file mode 100644
index 0000000..e64a92a
--- /dev/null
+++ b/tests/views_test/config/views.view.test_argument_default_current_user.yml
@@ -0,0 +1,51 @@
+api_version: '3'
+base_table: node
+core: {  }
+description: ''
+disabled: '0'
+display:
+    default:
+        display_options:
+            access:
+                type: none
+            arguments:
+                uid:
+                    default_action: default
+                    field: uid
+                    id: uid
+                    table: node
+            cache:
+                type: none
+            exposed_form:
+                type: basic
+            fields:
+                title:
+                    alter:
+                        alter_text: '0'
+                        ellipsis: '1'
+                        html: '0'
+                        make_link: '0'
+                        strip_tags: '0'
+                        trim: '0'
+                        word_boundary: '1'
+                    empty_zero: '0'
+                    field: title
+                    hide_empty: '0'
+                    id: title
+                    link_to_node: '0'
+                    table: node
+            pager:
+                options:
+                    id: '0'
+                    items_per_page: '10'
+                    offset: '0'
+                type: full
+            row_plugin: fields
+            style_plugin: default
+        display_plugin: default
+        display_title: Master
+        id: default
+        position: '0'
+human_name: {  }
+name: test_argument_default_current_user
+tag: ''
diff --git a/tests/views_test/config/views.view.test_exposed_admin_ui.yml b/tests/views_test/config/views.view.test_exposed_admin_ui.yml
new file mode 100644
index 0000000..580bf4c
--- /dev/null
+++ b/tests/views_test/config/views.view.test_exposed_admin_ui.yml
@@ -0,0 +1,51 @@
+api_version: '2'
+base_table: node
+core: {  }
+description: ''
+disabled: '0'
+display:
+    default:
+        display_options:
+            access:
+                type: none
+            cache:
+                type: none
+            exposed_form:
+                options:
+                    reset_button: '1'
+                type: basic
+            filters:
+                type:
+                    expose:
+                        label: 'Content: Type'
+                        operator_id: type_op
+                        use_operator: '1'
+                    field: type
+                    id: type
+                    table: node
+            pager:
+                type: full
+            row_options:
+                comments: '0'
+                links: '1'
+            row_plugin: node
+            sorts:
+                created:
+                    field: created
+                    id: created
+                    table: node
+            style_plugin: default
+        display_plugin: default
+        display_title: Master
+        id: default
+        position: '0'
+    page_1:
+        display_options:
+            path: test_exposed_admin_ui
+        display_plugin: page
+        display_title: Page
+        id: page_1
+        position: '0'
+human_name: {  }
+name: test_exposed_admin_ui
+tag: ''
diff --git a/tests/views_test/config/views.view.test_filter_in_operator_ui.yml b/tests/views_test/config/views.view.test_filter_in_operator_ui.yml
new file mode 100644
index 0000000..f07be91
--- /dev/null
+++ b/tests/views_test/config/views.view.test_filter_in_operator_ui.yml
@@ -0,0 +1,37 @@
+api_version: '2'
+base_table: node
+core: {  }
+description: ''
+disabled: '0'
+display:
+    default:
+        display_options:
+            access:
+                type: none
+            cache:
+                type: none
+            exposed_form:
+                type: basic
+            filters:
+                type:
+                    expose:
+                        identifier: type
+                        label: 'Content: Type'
+                        operator_id: type_op
+                        reduce: '0'
+                        use_operator: '0'
+                    exposed: '1'
+                    field: type
+                    id: type
+                    table: node
+            pager:
+                type: full
+            row_plugin: fields
+            style_plugin: default
+        display_plugin: default
+        display_title: Master
+        id: default
+        position: '0'
+human_name: {  }
+name: test_filter_in_operator_ui
+tag: ''
diff --git a/tests/views_test/config/views.view.test_rename_reset_button.yml b/tests/views_test/config/views.view.test_rename_reset_button.yml
new file mode 100644
index 0000000..04b627c
--- /dev/null
+++ b/tests/views_test/config/views.view.test_rename_reset_button.yml
@@ -0,0 +1,52 @@
+api_version: '3.0'
+base_table: node
+core: '0'
+description: ''
+disabled: '0'
+display:
+    default:
+        display_options:
+            access:
+                type: none
+            cache:
+                type: none
+            exposed_form:
+                options:
+                    reset_button: '1'
+                type: basic
+            filters:
+                type:
+                    expose:
+                        identifier: type
+                        label: 'Content: Type'
+                        operator_id: type_op
+                        reduce: '0'
+                    exposed: '1'
+                    field: type
+                    id: type
+                    table: node
+            pager:
+                type: full
+            query:
+                options:
+                    query_comment: '0'
+                type: views_query
+            row_options:
+                comments: '0'
+                links: '1'
+            row_plugin: node
+            style_plugin: default
+        display_plugin: default
+        display_title: Master
+        id: default
+        position: '0'
+    page_1:
+        display_options:
+            path: test_rename_reset_button
+        display_plugin: page
+        display_title: Page
+        id: page_1
+        position: '0'
+human_name: ''
+name: test_rename_reset_button
+tag: ''
diff --git a/tests/views_test/config/views.view.test_views_groupby_save.yml b/tests/views_test/config/views.view.test_views_groupby_save.yml
new file mode 100644
index 0000000..97cbeb2
--- /dev/null
+++ b/tests/views_test/config/views.view.test_views_groupby_save.yml
@@ -0,0 +1,25 @@
+api_version: '2'
+base_table: node
+core: {  }
+description: ''
+disabled: '0'
+display:
+    default:
+        display_options:
+            access:
+                type: none
+            cache:
+                type: none
+            exposed_form:
+                type: basic
+            pager:
+                type: none
+            row_plugin: fields
+            style_plugin: default
+        display_plugin: default
+        display_title: Master
+        id: default
+        position: '0'
+human_name: {  }
+name: test_views_groupby_save
+tag: ''
diff --git a/tests/views_test/views_test.views_default.inc b/tests/views_test/views_test.views_default.inc
deleted file mode 100644
index 77fadb0..0000000
--- a/tests/views_test/views_test.views_default.inc
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-
-/**
- * @file
- * Tests views.
- */
-
-use Drupal\views\View;
-
-/**
- * Implements hook_views_default_views().
- */
-function views_test_views_default_views() {
-  $view = new View();
-  $view->name = 'test_views_groupby_save';
-  $view->description = '';
-  $view->tag = '';
-  $view->view_php = '';
-  $view->base_table = 'node';
-  $view->is_cacheable = FALSE;
-  $view->api_version = 2;
-  $view->version = 7;
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'none';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'fields';
-
-  $views[$view->name] = $view;
-
-  $view = new View();
-  $view->name = 'test_rename_reset_button';
-  $view->description = '';
-  $view->tag = '';
-  $view->base_table = 'node';
-  $view->human_name = '';
-  $view->core = 0;
-  $view->api_version = '3.0';
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['query']['type'] = 'views_query';
-  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['exposed_form']['options']['reset_button'] = TRUE;
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'node';
-  $handler->display->display_options['row_options']['links'] = 1;
-  $handler->display->display_options['row_options']['comments'] = 0;
-  /* Filter criterion: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['type']['expose']['operator_id'] = 'type_op';
-  $handler->display->display_options['filters']['type']['expose']['label'] = 'Content: Type';
-  $handler->display->display_options['filters']['type']['expose']['identifier'] = 'type';
-  $handler->display->display_options['filters']['type']['expose']['reduce'] = 0;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page_1');
-  $handler->display->display_options['path'] = 'test_rename_reset_button';
-
-  $views[$view->name] = $view;
-
-  $view = new View();
-  $view->name = 'test_exposed_admin_ui';
-  $view->description = '';
-  $view->tag = '';
-  $view->view_php = '';
-  $view->base_table = 'node';
-  $view->is_cacheable = FALSE;
-  $view->api_version = 2;
-  $view->version = 7;
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['exposed_form']['options']['reset_button'] = TRUE;
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'node';
-  $handler->display->display_options['row_options']['links'] = 1;
-  $handler->display->display_options['row_options']['comments'] = 0;
-  /* Sort criterion: Content: Post date */
-  $handler->display->display_options['sorts']['created']['id'] = 'created';
-  $handler->display->display_options['sorts']['created']['table'] = 'node';
-  $handler->display->display_options['sorts']['created']['field'] = 'created';
-  /* Filter: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['expose']['operator_id'] = 'type_op';
-  $handler->display->display_options['filters']['type']['expose']['label'] = 'Content: Type';
-  $handler->display->display_options['filters']['type']['expose']['use_operator'] = TRUE;
-
-  /* Display: Page */
-  $handler = $view->new_display('page', 'Page', 'page_1');
-  $handler->display->display_options['path'] = 'test_exposed_admin_ui';
-
-  $views[$view->name] = $view;
-
-  $view = new View();
-  $view->name = 'test_filter_in_operator_ui';
-  $view->description = '';
-  $view->tag = '';
-  $view->view_php = '';
-  $view->base_table = 'node';
-  $view->is_cacheable = FALSE;
-  $view->api_version = 2;
-  $view->version = 7;
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'fields';
-  /* Filter: Content: Type */
-  $handler->display->display_options['filters']['type']['id'] = 'type';
-  $handler->display->display_options['filters']['type']['table'] = 'node';
-  $handler->display->display_options['filters']['type']['field'] = 'type';
-  $handler->display->display_options['filters']['type']['exposed'] = TRUE;
-  $handler->display->display_options['filters']['type']['expose']['operator_id'] = 'type_op';
-  $handler->display->display_options['filters']['type']['expose']['label'] = 'Content: Type';
-  $handler->display->display_options['filters']['type']['expose']['use_operator'] = 0;
-  $handler->display->display_options['filters']['type']['expose']['identifier'] = 'type';
-  $handler->display->display_options['filters']['type']['expose']['reduce'] = 0;
-
-  $views[$view->name] = $view;
-
-  $view = new View();
-  $view->name = 'test_argument_default_current_user';
-  $view->description = '';
-  $view->tag = '';
-  $view->view_php = '';
-  $view->base_table = 'node';
-  $view->is_cacheable = FALSE;
-  $view->api_version = 3;
-  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
-
-  /* Display: Master */
-  $handler = $view->new_display('default', 'Master', 'default');
-  $handler->display->display_options['access']['type'] = 'none';
-  $handler->display->display_options['cache']['type'] = 'none';
-  $handler->display->display_options['exposed_form']['type'] = 'basic';
-  $handler->display->display_options['pager']['type'] = 'full';
-  $handler->display->display_options['pager']['options']['items_per_page'] = '10';
-  $handler->display->display_options['pager']['options']['offset'] = '0';
-  $handler->display->display_options['pager']['options']['id'] = '0';
-  $handler->display->display_options['style_plugin'] = 'default';
-  $handler->display->display_options['row_plugin'] = 'fields';
-  /* Field: Content: Title */
-  $handler->display->display_options['fields']['title']['id'] = 'title';
-  $handler->display->display_options['fields']['title']['table'] = 'node';
-  $handler->display->display_options['fields']['title']['field'] = 'title';
-  $handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
-  $handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
-  $handler->display->display_options['fields']['title']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['title']['alter']['word_boundary'] = 1;
-  $handler->display->display_options['fields']['title']['alter']['ellipsis'] = 1;
-  $handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['title']['alter']['html'] = 0;
-  $handler->display->display_options['fields']['title']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['title']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['title']['link_to_node'] = 0;
-  /* Contextual filter: Content: Author uid */
-  $handler->display->display_options['arguments']['uid']['id'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['table'] = 'node';
-  $handler->display->display_options['arguments']['uid']['field'] = 'uid';
-  $handler->display->display_options['arguments']['uid']['default_action'] = 'default';
-
-  $views[$view->name] = $view;
-
-  return $views;
-}
diff --git a/views.info b/views.info
index adea473..77703ce 100644
--- a/views.info
+++ b/views.info
@@ -4,6 +4,7 @@ package = Views
 core = 8.x
 php = 5.2
 dependencies[] = ctools
+dependencies[] = config
 
 ; Always available CSS
 stylesheets[all][] = css/views.base.css
diff --git a/views.install b/views.install
index dd6c8bf..149e524 100644
--- a/views.install
+++ b/views.install
@@ -35,6 +35,10 @@ function views_schema() {
       ),
       'object' => 'Drupal\views\View',
       // the callback to load the displays
+      'load all callback' => 'views_get_all_views',
+      'load callback' => 'views_storage_load',
+      'save callback' => 'views_storage_save',
+      'status callback' => 'views_storage_status',
       'subrecords callback' => 'views_load_display_records',
       // the variable that holds enabled/disabled status
       'status' => 'views_defaults',
diff --git a/views.module b/views.module
index f6d8116..a044c43 100644
--- a/views.module
+++ b/views.module
@@ -75,25 +75,28 @@ function views_temp_store() {
 }
 
 /**
- * Implements hook_ctools_exportable_info().
+ * Implements hook_entity_info().
  */
-function views_ctools_exportable_info() {
-  return array(
+function views_entity_info() {
+  $return = array(
     'view' => array(
-      'controller class' => 'Drupal\ctools\DatabaseExportableController',
-      'key' => 'name',
-      'identifier' => 'view',
-      'default hook' => 'views_default_views',
-      'bulk export' => TRUE,
-      'api' => array(
-        'owner' => 'views',
-        'api' => 'views_default',
-        'minimum_version' => '2',
-        'current_version' => '3.0',
+      'label' => t('View'),
+      'entity class' => 'Drupal\views\View',
+      'controller class' => 'Drupal\views\ViewStorageController',
+      'form controller class' => array(
+        'default' => 'Drupal\node\NodeFormController',
+      ),
+      'config prefix' => 'views.view',
+      'fieldable' => FALSE,
+      'entity keys' => array(
+        'id' => 'name',
+        'label' => 'human_name',
+        'uuid' => 'uuid',
       ),
-      'schema' => 'views_view',
     ),
   );
+
+  return $return;
 }
 
 /**
@@ -1504,9 +1507,7 @@ function views_get_all_templates() {
  *   it can be successfully saved.
  */
 function views_new_view() {
-  $view = new View();
-  $view->vid = 'new';
-  $view->add_display('default');
+  $view = entity_create('view', array());
 
   return $view;
 }
@@ -1569,8 +1570,53 @@ function views_get_applicable_views($type) {
  */
 function views_get_all_views($reset = FALSE) {
   // @todo replace with http://drupal.org/node/1741154.
-  ctools_include('export');
-  return ctools_export_crud_load_all('views_view', $reset);
+  $controller = entity_get_controller('view');
+  return $controller->load();
+}
+
+/**
+ * Load a view with the storage controller.
+ *
+ * @param string $id
+ *   The view name to load.
+ *
+ * @return Drupal\views\View
+ *   The view which is loaded.
+ */
+function views_storage_load($id) {
+  $controller = entity_get_controller('view');
+  $result = $controller->load(array($id));
+  return reset($result);
+}
+
+/**
+ * Save a view with the storage controller.
+ *
+ * @param Drupal\views\View $view
+ *   The view which is saved.
+ *
+ * @return
+ *   SAVED_NEW or SAVED_UPDATED is returned depending on the operation
+ *   performed.
+ */
+function views_storage_save(View $view) {
+  $controller = entity_get_controller('view');
+  return $controller->save($view);
+}
+
+/**
+ * Change the status of a view.
+ *
+ * @param Drupal\views\View $view
+ *   The view which gets a different status.
+ */
+function views_storage_status(View $view, $status) {
+  if (!$status) {
+    $view->enable();
+  }
+  else {
+    $view->disable();
+  }
 }
 
 /**
@@ -1696,17 +1742,9 @@ function views_view_is_disabled($view) {
  *   A reference to the $view object. Use $reset if you're sure you want
  *   a fresh one.
  */
-function views_get_view($name, $reset = FALSE) {
-  if ($reset) {
-    $cache = &drupal_static('ctools_export_load_object');
-    if (isset($cache['views_view'][$name])) {
-      unset($cache['views_view'][$name]);
-    }
-  }
+function views_get_view($name) {
 
-  // @todo replace with http://drupal.org/node/1741154.
-  ctools_include('export');
-  $view = ctools_export_crud_load('views_view', $name);
+  $view = entity_load('view', $name);
   if ($view) {
     $view->update();
     return $view->clone_view();
