diff --git a/lib/Drupal/views/Plugin/Discovery/ViewsDiscovery.php b/lib/Drupal/views/Plugin/Discovery/ViewsDiscovery.php
deleted file mode 100644
index 9e6042c1c25233816a6b6aa3fdb0d2096e4aed12..0000000000000000000000000000000000000000
--- a/lib/Drupal/views/Plugin/Discovery/ViewsDiscovery.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\views\Plugin\Discovery\ViewsDiscovery.
- */
-
-namespace Drupal\views\Plugin\Discovery;
-
-use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
-
-/**
- * Discovery interface which supports the hook_views_plugins mechanism.
- */
-class ViewsDiscovery extends AnnotatedClassDiscovery {
-
-  public function getDefinitions() {
-    $definitions = parent::getDefinitions();
-    foreach ($definitions as $definition) {
-      // @todo: Allow other modules to write views plugins
-      $module_dir = $module = 'views';
-      // Setup automatic path/file finding for theme registration
-      if ($module_dir == 'views') {
-        $theme_path = drupal_get_path('module', $module_dir) . '/theme';
-        $theme_file = 'theme.inc';
-        $path = drupal_get_path('module', $module_dir) . '/plugins';
-      }
-      else {
-        $theme_path = $path = drupal_get_path('module', $module_dir);
-        $theme_file = "$module.views.inc";
-      }
-
-      if (!isset($definition['module'])) {
-        $definition['module'] = $module_dir;
-      }
-      if (!isset($definition['theme path'])) {
-        $definition['theme path'] = $theme_path;
-      }
-      if (!isset($definition['theme file'])) {
-        $definition['theme file'] = $theme_file;
-      }
-      if (!isset($definition['path'])) {
-        $definition['path'] = $path;
-      }
-      if (!isset($definition['parent'])) {
-        $definition['parent'] = 'parent';
-      }
-
-      // merge the new data in
-      $definitions[$definition['id']] = $definition;
-    }
-
-    return $definitions;
-  }
-
-}
diff --git a/lib/Drupal/views/Plugin/Type/ViewsPluginManager.php b/lib/Drupal/views/Plugin/Type/ViewsPluginManager.php
index f36493baa7a30099b584361bb33730fbbdc5e6b2..3cca741b6f24204c13f675714400de1a0cd78e04 100644
--- a/lib/Drupal/views/Plugin/Type/ViewsPluginManager.php
+++ b/lib/Drupal/views/Plugin/Type/ViewsPluginManager.php
@@ -9,7 +9,7 @@
 
 use Drupal\Component\Plugin\PluginManagerBase;
 use Drupal\Component\Plugin\Factory\DefaultFactory;
-use Drupal\views\Plugin\Discovery\ViewsDiscovery;
+use Drupal\Core\Plugin\Discovery\AnnotatedClassDiscovery;
 use Drupal\Core\Plugin\Discovery\CacheDecorator;
 
 class ViewsPluginManager extends PluginManagerBase {
@@ -21,11 +21,56 @@ class ViewsPluginManager extends PluginManagerBase {
    */
   protected $type;
 
+  /**
+   * A list of Drupal core modules.
+   *
+   * @var array
+   */
+  protected $coreModules = array();
+
   public function __construct($type) {
+    // @todo Remove this hack in http://drupal.org/node/1708404.
+    views_init();
+
     $this->type = $type;
 
-    $this->discovery = new CacheDecorator(new ViewsDiscovery('views', $this->type), 'views:' . $this->type, 'cache');
+    $this->discovery = new CacheDecorator(new AnnotatedClassDiscovery('views', $this->type), 'views:' . $this->type, 'views');
     $this->factory = new DefaultFactory($this->discovery);
+    $this->coreModules = views_core_modules();
+  }
+
+  /**
+   * Overrides Drupal\Component\Plugin\PluginManagerBase::processDefinition().
+   */
+  public function processDefinition(&$definition, $plugin_id) {
+    parent::processDefinition($definition, $plugin_id);
+
+    // If someone adds an invalid plugin ID, don't provide defaults.
+    // views_get_plugin() will then don't createInstance.
+    if (empty($definition)) {
+      return;
+    }
+
+    $module = isset($definition['module']) ? $definition['module'] : 'views';
+    // If this module is a core module, use views as the module directory.
+    $module_dir = in_array($module, $this->coreModules) ? 'views' : $module;
+
+    // Setup automatic path/file finding for theme registration.
+    if ($module_dir == 'views') {
+      $theme_path = drupal_get_path('module', $module_dir) . '/theme';
+      $theme_file = 'theme.inc';
+    }
+    else {
+      $theme_path = $path = drupal_get_path('module', $module_dir);
+      $theme_file = "$module.views.inc";
+    }
+
+    $definition += array(
+      'module' => $module_dir,
+      'theme path' => $theme_path,
+      'theme file' => $theme_file,
+      'parent' => 'parent',
+    );
   }
 
 }
diff --git a/lib/Drupal/views/Tests/ArgumentDefaultTest.php b/lib/Drupal/views/Tests/ArgumentDefaultTest.php
index 1817998244e577e725a6da45e4c292c174593458..7fec4f5cfb907b82cbb2bc390384fef105689d33 100644
--- a/lib/Drupal/views/Tests/ArgumentDefaultTest.php
+++ b/lib/Drupal/views/Tests/ArgumentDefaultTest.php
@@ -16,6 +16,13 @@ class ArgumentDefaultTest extends ViewsSqlTest {
 
   protected $profile = 'standard';
 
+  /**
+   * A random string used in the default views.
+   *
+   * @var string
+   */
+  protected $random;
+
   public static function getInfo() {
     return array(
       'name' => 'Argument default',
@@ -34,7 +41,6 @@ public function setUp() {
    * Tests the use of a default argument plugin that provides no options.
    */
   function testArgumentDefaultNoOptions() {
-    module_enable(array('views_test'));
     $admin_user = $this->drupalCreateUser(array('administer views', 'administer site configuration'));
     $this->drupalLogin($admin_user);
 
diff --git a/lib/Drupal/views/Tests/UpgradeTestCase.php b/lib/Drupal/views/Tests/UpgradeTestCase.php
index d0e38ec5f65a9a3a02fe5ec6518e471d172ab9dc..f2105dff1c65132ff45747775e812046a6f7983e 100644
--- a/lib/Drupal/views/Tests/UpgradeTestCase.php
+++ b/lib/Drupal/views/Tests/UpgradeTestCase.php
@@ -207,7 +207,7 @@ protected function viewUpgradeImport() {
       $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"] = "list";
+      $handler->display->display_options["style_plugin"] = "html_list";
       $handler->display->display_options["row_plugin"] = "fields";
       /* Relationship: Comment: Node */
       $handler->display->display_options["relationships"]["nid"]["id"] = "nid";
@@ -242,7 +242,7 @@ protected function viewUpgradeImport() {
       $handler = $view->new_display("page", "Page", "page");
       $handler->display->display_options["defaults"]["items_per_page"] = FALSE;
       $handler->display->display_options["defaults"]["style_plugin"] = FALSE;
-      $handler->display->display_options["style_plugin"] = "list";
+      $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";