diff --git a/tests/views_test.info b/tests/modules/views_test/views_test.info
similarity index 100%
rename from tests/views_test.info
rename to tests/modules/views_test/views_test.info
diff --git a/tests/views_test.install b/tests/modules/views_test/views_test.install
similarity index 100%
rename from tests/views_test.install
rename to tests/modules/views_test/views_test.install
diff --git a/tests/views_test.module b/tests/modules/views_test/views_test.module
similarity index 100%
rename from tests/views_test.module
rename to tests/modules/views_test/views_test.module
diff --git a/tests/views_test.views_default.inc b/tests/modules/views_test/views_test.views_default.inc
similarity index 100%
rename from tests/views_test.views_default.inc
rename to tests/modules/views_test/views_test.views_default.inc
diff --git a/css/ie/views-admin.ie7.css b/view_ui/css/ie/views-admin.ie7.css
similarity index 100%
rename from css/ie/views-admin.ie7.css
rename to view_ui/css/ie/views-admin.ie7.css
diff --git a/css/views-admin-rtl.css b/view_ui/css/views-admin-rtl.css
similarity index 100%
rename from css/views-admin-rtl.css
rename to view_ui/css/views-admin-rtl.css
diff --git a/css/views-admin.advanced_help.css b/view_ui/css/views-admin.advanced_help.css
similarity index 100%
rename from css/views-admin.advanced_help.css
rename to view_ui/css/views-admin.advanced_help.css
diff --git a/css/views-admin.bartik-rtl.css b/view_ui/css/views-admin.bartik-rtl.css
similarity index 100%
rename from css/views-admin.bartik-rtl.css
rename to view_ui/css/views-admin.bartik-rtl.css
diff --git a/css/views-admin.bartik.css b/view_ui/css/views-admin.bartik.css
similarity index 100%
rename from css/views-admin.bartik.css
rename to view_ui/css/views-admin.bartik.css
diff --git a/css/views-admin.contextual.css b/view_ui/css/views-admin.contextual.css
similarity index 100%
rename from css/views-admin.contextual.css
rename to view_ui/css/views-admin.contextual.css
diff --git a/css/views-admin.css b/view_ui/css/views-admin.css
similarity index 100%
rename from css/views-admin.css
rename to view_ui/css/views-admin.css
diff --git a/css/views-admin.ctools-rtl.css b/view_ui/css/views-admin.ctools-rtl.css
similarity index 100%
rename from css/views-admin.ctools-rtl.css
rename to view_ui/css/views-admin.ctools-rtl.css
diff --git a/css/views-admin.ctools.css b/view_ui/css/views-admin.ctools.css
similarity index 100%
rename from css/views-admin.ctools.css
rename to view_ui/css/views-admin.ctools.css
diff --git a/css/views-admin.garland-rtl.css b/view_ui/css/views-admin.garland-rtl.css
similarity index 100%
rename from css/views-admin.garland-rtl.css
rename to view_ui/css/views-admin.garland-rtl.css
diff --git a/css/views-admin.garland.css b/view_ui/css/views-admin.garland.css
similarity index 100%
rename from css/views-admin.garland.css
rename to view_ui/css/views-admin.garland.css
diff --git a/css/views-admin.seven-rtl.css b/view_ui/css/views-admin.seven-rtl.css
similarity index 100%
rename from css/views-admin.seven-rtl.css
rename to view_ui/css/views-admin.seven-rtl.css
diff --git a/css/views-admin.seven.css b/view_ui/css/views-admin.seven.css
similarity index 100%
rename from css/views-admin.seven.css
rename to view_ui/css/views-admin.seven.css
diff --git a/css/views-admin.theme-rtl.css b/view_ui/css/views-admin.theme-rtl.css
similarity index 100%
rename from css/views-admin.theme-rtl.css
rename to view_ui/css/views-admin.theme-rtl.css
diff --git a/css/views-admin.theme.css b/view_ui/css/views-admin.theme.css
similarity index 98%
rename from css/views-admin.theme.css
rename to view_ui/css/views-admin.theme.css
index df45cdf..dcb5b1e 100644
--- a/css/views-admin.theme.css
+++ b/view_ui/css/views-admin.theme.css
@@ -39,20 +39,20 @@
 .views-admin .icon,
 .views-admin .icon-text {
   background-attachment: scroll;
-  background-image: url("../images/sprites.png");
+  background-image: url("../../images/sprites.png");
   background-position: left top; /* LTR */
   background-repeat: no-repeat;
 }
 
 .views-admin a.icon {
   background-image:
-    url("../images/sprites.png"),
+    url("../../images/sprites.png"),
     -moz-linear-gradient(
       -90deg,
       #ffffff 0px,
       #e8e8e8 100%);
   background-image:
-    url("../images/sprites.png"),
+    url("../../images/sprites.png"),
     -webkit-gradient(
       linear,
       left top,
@@ -61,7 +61,7 @@
       color-stop(1.0, rgba(232, 232, 232, 1.0))
     );
   background-image:
-    url("../images/sprites.png"),
+    url("../../images/sprites.png"),
     -webkit-linear-gradient(
       -90deg,
       #ffffff 0px,
@@ -727,7 +727,7 @@ td.group-title {
 }
 
 .views-ui-dialog .ui-dialog-titlebar-close {
-  background: url("../images/close.png") no-repeat scroll 6px 3px #F3F4EE;
+  background: url("../../images/close.png") no-repeat scroll 6px 3px #F3F4EE;
   border-color: #aaaaaa;
   -moz-border-radius: 0 10px 12px 0;
   -webkit-border-radius: 0 10px 12px 0;
@@ -1031,7 +1031,7 @@ td.group-title {
 
 .ajax-progress-throbber {
   background-color: #232323;
-  background-image: url("../images/loading-small.gif");
+  background-image: url("../../images/loading-small.gif");
   background-position: center center;
   background-repeat: no-repeat;
   -moz-border-radius: 7px;
diff --git a/includes/admin.inc b/view_ui/includes/admin.inc
similarity index 100%
rename from includes/admin.inc
rename to view_ui/includes/admin.inc
diff --git a/js/views-admin.js b/view_ui/js/views-admin.js
similarity index 100%
rename from js/views-admin.js
rename to view_ui/js/views-admin.js
diff --git a/plugins/export_ui/views_ui.class.php b/view_ui/plugins/export_ui/views_ui.class.php
similarity index 99%
rename from plugins/export_ui/views_ui.class.php
rename to view_ui/plugins/export_ui/views_ui.class.php
index c5c4001..2ba6043 100644
--- a/plugins/export_ui/views_ui.class.php
+++ b/view_ui/plugins/export_ui/views_ui.class.php
@@ -73,7 +73,7 @@ class views_ui extends ctools_export_ui {
       $row_class .= " element-invisible";
     }
 
-    views_include('admin');
+    module_load_include('inc', 'views_ui', 'includes/admin');
 
     parent::list_form($form, $form_state);
 
@@ -252,7 +252,7 @@ class views_ui extends ctools_export_ui {
   }
 
   function list_render(&$form_state) {
-    views_include('admin');
+    module_load_include('inc', 'views_ui', 'includes/admin');
     views_ui_add_admin_css();
     if (empty($_REQUEST['js'])) {
       views_ui_check_advanced_help();
diff --git a/plugins/export_ui/views_ui.inc b/view_ui/plugins/export_ui/views_ui.inc
similarity index 100%
rename from plugins/export_ui/views_ui.inc
rename to view_ui/plugins/export_ui/views_ui.inc
diff --git a/tests/views_ui.test b/view_ui/tests/views_ui.test
similarity index 86%
rename from tests/views_ui.test
rename to view_ui/tests/views_ui.test
index 2f77996..b0f6c0e 100644
--- a/tests/views_ui.test
+++ b/view_ui/tests/views_ui.test
@@ -635,165 +635,166 @@ class ViewsUIWizardMenuTestCase extends ViewsUIWizardHelper {
 /**
  * Tests the ability of the views wizard to create views with a jump menu style plugin.
  */
-class ViewsUIWizardJumpMenuTestCase extends ViewsUIWizardHelper {
-  public static function getInfo() {
-    return array(
-      'name' => 'Views UI wizard jump menu functionality',
-      'description' => 'Test the ability of the views wizard to create views with a jump menu style plugin.',
-      'group' => 'Views UI',
-    );
-  }
-
-  /**
-   * Tests the jump menu style plugin.
-   */
-  function testJumpMenus() {
-    // We'll run this test for several different base tables that appear in the
-    // wizard.
-    $base_table_methods = array(
-      'node' => 'createNodeAndGetPath',
-      'users' => 'createUserAndGetPath',
-      'comment' => 'createCommentAndGetPath',
-      'taxonomy_term' => 'createTaxonomyTermAndGetPath',
-      'file_managed' => 'createFileAndGetPath',
-      'node_revision' => 'createNodeRevisionAndGetPath',
-    );
-
-    foreach ($base_table_methods as $base_table => $method) {
-      // For each base table, find the path that we expect the jump menu to
-      // redirect us to.
-      $path_info = $this->{$method}();
-      if (is_array($path_info)) {
-        $path = $path_info['path'];
-        $options = isset($path_info['options']) ? $path_info['options'] : array();
-      }
-      else {
-        $path = $path_info;
-        $options = array();
-      }
-
-      // Create a page view for the specified base table that uses the jump
-      // menu style plugin.
-      $view = array();
-      $view['human_name'] = $this->randomName(16);
-      $view['name'] = strtolower($this->randomName(16));
-      $view['description'] = $this->randomName(16);
-      $view['show[wizard_key]'] = $base_table;
-      $view['page[create]'] = 1;
-      $view['page[title]'] = $this->randomName(16);
-      $view['page[path]'] = $this->randomName(16);
-      $view['page[style][style_plugin]'] = 'jump_menu';
-      $view['page[style][row_plugin]'] = 'fields';
-      $this->drupalPost('admin/structure/views/add', $view, t('Save & exit'));
-
-      // Submit the jump menu form, and check that we are redirected to the
-      // expected URL.
-
-      $edit = array();
-      $edit['jump'] = url($path, $options);
-
-      // The urls are built with :: to be able to have a unique path all the time,
-      // so try to find out the real path of $edit.
-      $view_object = views_get_view($view['name']);
-      $view_object->preview('page');
-      $form = $view_object->style_plugin->render();
-      $jump_options = $form['jump']['#options'];
-      foreach ($jump_options as $key => $title) {
-        if (strpos($key, $edit['jump']) !== FALSE) {
-          $edit['jump'] = $key;
-        }
-      }
-
-      $this->drupalPost($view['page[path]'], $edit, t('Go'));
-      $this->assertResponse(200);
-      $this->assertUrl($path, $options);
-    }
-  }
-
-  /**
-   * Helper function to create a node and return its expected path.
-   */
-  function createNodeAndGetPath() {
-    $node = $this->drupalCreateNode();
-    return $node->uri();
-  }
-
-  /**
-   * Helper function to create a user and return its expected path.
-   */
-  function createUserAndGetPath() {
-    $account = $this->drupalCreateUser();
-    return $account->uri();
-  }
-
-  /**
-   * Helper function to create a comment and return its expected path.
-   */
-  function createCommentAndGetPath() {
-    $node = $this->drupalCreateNode();
-    $comment = entity_create('comment', array(
-      'cid' => NULL,
-      'nid' => $node->nid,
-      'pid' => 0,
-      'uid' => 0,
-      'status' => COMMENT_PUBLISHED,
-      'subject' => $this->randomName(),
-      'language' => LANGUAGE_NOT_SPECIFIED,
-      'comment_body' => array(LANGUAGE_NOT_SPECIFIED => array($this->randomName())),
-    ));
-    $comment->save();
-    return $comment->uri();
-  }
-
-  /**
-   * Helper function to create a taxonomy term and return its expected path.
-   */
-  function createTaxonomyTermAndGetPath() {
-    $vocabulary = entity_create('taxonomy_vocabulary',  array(
-      'name' => $this->randomName(),
-      'machine_name' => drupal_strtolower($this->randomName()),
-    ));
-    $vocabulary->save();
-
-    $term = entity_create('taxonomy_term', array(
-      'name' => $this->randomName(),
-      'vid' => $vocabulary->vid,
-      'vocabulary_machine_name' => $vocabulary->machine_name,
-    ));
-    $term->save();
-    return $term->uri();
-  }
-
-  /**
-   * Helper function to create a file and return its expected path.
-   */
-  function createFileAndGetPath() {
-    $file = entity_create('file', array(
-      'uid' => 1,
-      'filename' => 'views-ui-jump-menu-test.txt',
-      'uri' => 'public://views-ui-jump-menu-test.txt',
-      'filemime' => 'text/plain',
-      'timestamp' => 1,
-      'status' => FILE_STATUS_PERMANENT,
-    ));
-    file_put_contents($file->uri, 'test content');
-    $file->save();
-    return file_create_url($file->uri);
-  }
-
-  /**
-   * Helper function to create a node revision and return its expected path.
-   */
-  function createNodeRevisionAndGetPath() {
-    // The node needs at least two revisions in order for Drupal to allow
-    // access to the revision path.
-    $settings = array('revision' => TRUE);
-    $node = $this->drupalCreateNode($settings);
-    $node->vid = NULL;
-    $node->save();
-    return 'node/' . $node->nid . '/revisions/' . $node->vid . '/view';
-  }
-}
+//class ViewsUIWizardJumpMenuTestCase extends ViewsUIWizardHelper {
+//  public static function getInfo() {
+//    return array(
+//      'name' => 'Views UI wizard jump menu functionality',
+//      'description' => 'Test the ability of the views wizard to create views with a jump menu style plugin.',
+//      'group' => 'Views UI',
+//    );
+//  }
+//
+//  /**
+//   * Tests the jump menu style plugin.
+//   */
+//  function testJumpMenus() {
+//    // We'll run this test for several different base tables that appear in the
+//    // wizard.
+//    $base_table_methods = array(
+//      'node' => 'createNodeAndGetPath',
+//      'users' => 'createUserAndGetPath',
+//      'comment' => 'createCommentAndGetPath',
+//      'taxonomy_term' => 'createTaxonomyTermAndGetPath',
+//      'file_managed' => 'createFileAndGetPath',
+//      'node_revision' => 'createNodeRevisionAndGetPath',
+//    );
+//
+//    foreach ($base_table_methods as $base_table => $method) {
+//      // For each base table, find the path that we expect the jump menu to
+//      // redirect us to.
+//      $path_info = $this->{$method}();
+//      if (is_array($path_info)) {
+//        $path = $path_info['path'];
+//        $options = isset($path_info['options']) ? $path_info['options'] : array();
+//      }
+//      else {
+//        $path = $path_info;
+//        $options = array();
+//      }
+//
+//      // Create a page view for the specified base table that uses the jump
+//      // menu style plugin.
+//      $view = array();
+//      $view['human_name'] = $this->randomName(16);
+//      $view['name'] = strtolower($this->randomName(16));
+//      $view['description'] = $this->randomName(16);
+//      $view['show[wizard_key]'] = $base_table;
+//      $view['page[create]'] = 1;
+//      $view['page[title]'] = $this->randomName(16);
+//      $view['page[path]'] = $this->randomName(16);
+//      $view['page[style][style_plugin]'] = 'jump_menu';
+//      $view['page[style][row_plugin]'] = 'fields';
+//      $this->drupalPost('admin/structure/views/add', $view, t('Save & exit'));
+//
+//      // Submit the jump menu form, and check that we are redirected to the
+//      // expected URL.
+//
+//      $edit = array();
+//      $edit['jump'] = url($path, $options);
+//
+//      // The urls are built with :: to be able to have a unique path all the time,
+//      // so try to find out the real path of $edit.
+//      debug($view['name']);
+//      $view_object = views_get_view($view['name']);
+//      $view_object->preview('page');
+//      $form = $view_object->style_plugin->render();
+//      $jump_options = $form['jump']['#options'];
+//      foreach ($jump_options as $key => $title) {
+//        if (strpos($key, $edit['jump']) !== FALSE) {
+//          $edit['jump'] = $key;
+//        }
+//      }
+//
+//      $this->drupalPost($view['page[path]'], $edit, t('Go'));
+//      $this->assertResponse(200);
+//      $this->assertUrl($path, $options);
+//    }
+//  }
+//
+//  /**
+//   * Helper function to create a node and return its expected path.
+//   */
+//  function createNodeAndGetPath() {
+//    $node = $this->drupalCreateNode();
+//    return $node->uri();
+//  }
+//
+//  /**
+//   * Helper function to create a user and return its expected path.
+//   */
+//  function createUserAndGetPath() {
+//    $account = $this->drupalCreateUser();
+//    return $account->uri();
+//  }
+//
+//  /**
+//   * Helper function to create a comment and return its expected path.
+//   */
+//  function createCommentAndGetPath() {
+//    $node = $this->drupalCreateNode();
+//    $comment = entity_create('comment', array(
+//      'cid' => NULL,
+//      'nid' => $node->nid,
+//      'pid' => 0,
+//      'uid' => 0,
+//      'status' => COMMENT_PUBLISHED,
+//      'subject' => $this->randomName(),
+//      'language' => LANGUAGE_NOT_SPECIFIED,
+//      'comment_body' => array(LANGUAGE_NOT_SPECIFIED => array($this->randomName())),
+//    ));
+//    $comment->save();
+//    return $comment->uri();
+//  }
+//
+//  /**
+//   * Helper function to create a taxonomy term and return its expected path.
+//   */
+//  function createTaxonomyTermAndGetPath() {
+//    $vocabulary = entity_create('taxonomy_vocabulary',  array(
+//      'name' => $this->randomName(),
+//      'machine_name' => drupal_strtolower($this->randomName()),
+//    ));
+//    $vocabulary->save();
+//
+//    $term = entity_create('taxonomy_term', array(
+//      'name' => $this->randomName(),
+//      'vid' => $vocabulary->vid,
+//      'vocabulary_machine_name' => $vocabulary->machine_name,
+//    ));
+//    $term->save();
+//    return $term->uri();
+//  }
+//
+//  /**
+//   * Helper function to create a file and return its expected path.
+//   */
+//  function createFileAndGetPath() {
+//    $file = entity_create('file', array(
+//      'uid' => 1,
+//      'filename' => 'views-ui-jump-menu-test.txt',
+//      'uri' => 'public://views-ui-jump-menu-test.txt',
+//      'filemime' => 'text/plain',
+//      'timestamp' => 1,
+//      'status' => FILE_STATUS_PERMANENT,
+//    ));
+//    file_put_contents($file->uri, 'test content');
+//    $file->save();
+//    return file_create_url($file->uri);
+//  }
+//
+//  /**
+//   * Helper function to create a node revision and return its expected path.
+//   */
+//  function createNodeRevisionAndGetPath() {
+//    // The node needs at least two revisions in order for Drupal to allow
+//    // access to the revision path.
+//    $settings = array('revision' => TRUE);
+//    $node = $this->drupalCreateNode($settings);
+//    $node->vid = NULL;
+//    $node->save();
+//    return 'node/' . $node->nid . '/revisions/' . $node->vid . '/view';
+//  }
+//}
 
 /**
  * Tests that displays can be correctly overridden via the user interface.
diff --git a/theme/views-ui-display-tab-bucket.tpl.php b/view_ui/theme/views-ui-display-tab-bucket.tpl.php
similarity index 100%
rename from theme/views-ui-display-tab-bucket.tpl.php
rename to view_ui/theme/views-ui-display-tab-bucket.tpl.php
diff --git a/theme/views-ui-display-tab-setting.tpl.php b/view_ui/theme/views-ui-display-tab-setting.tpl.php
similarity index 100%
rename from theme/views-ui-display-tab-setting.tpl.php
rename to view_ui/theme/views-ui-display-tab-setting.tpl.php
diff --git a/theme/views-ui-edit-item.tpl.php b/view_ui/theme/views-ui-edit-item.tpl.php
similarity index 100%
rename from theme/views-ui-edit-item.tpl.php
rename to view_ui/theme/views-ui-edit-item.tpl.php
diff --git a/theme/views-ui-edit-view.tpl.php b/view_ui/theme/views-ui-edit-view.tpl.php
similarity index 100%
rename from theme/views-ui-edit-view.tpl.php
rename to view_ui/theme/views-ui-edit-view.tpl.php
diff --git a/views_ui.info b/view_ui/views_ui.info
similarity index 68%
rename from views_ui.info
rename to view_ui/views_ui.info
index b131de9..05f391f 100644
--- a/views_ui.info
+++ b/view_ui/views_ui.info
@@ -4,5 +4,6 @@ package = Views
 core = 8.x
 configure = admin/structure/views
 dependencies[] = views
-files[] = views_ui.module
-files[] = plugins/views_wizard/views_ui_base_views_wizard.class.php
+
+; Tests
+files[] = tests/views_ui.test
diff --git a/views_ui.module b/view_ui/views_ui.module
similarity index 99%
rename from views_ui.module
rename to view_ui/views_ui.module
index 4306ea0..8a6b986 100644
--- a/views_ui.module
+++ b/view_ui/views_ui.module
@@ -159,7 +159,7 @@ function views_ui_menu() {
  * Implements hook_theme().
  */
 function views_ui_theme() {
-  $path = drupal_get_path('module', 'views');
+  $path = drupal_get_path('module', 'views_ui');
   require_once DRUPAL_ROOT . "/$path/includes/admin.inc";
 
   return array(
@@ -219,13 +219,6 @@ function views_ui_theme() {
     'views_ui_view_preview_section' => array(
       'variables' => array('view' => NULL, 'section' => NULL, 'content' => NULL, 'links' => ''),
     ),
-
-    // Generic container wrapper, to use instead of theme_container when an id
-    // is not desired.
-    'views_container' => array(
-      'render element' => 'element',
-      'file' => 'theme/theme.inc',
-    ),
   );
 }
 
diff --git a/views.info b/views.info
index d778aa2..5ed8bdd 100644
--- a/views.info
+++ b/views.info
@@ -259,4 +259,6 @@ files[] = tests/user/views_handler_field_user_name.test
 files[] = tests/user/views_user_argument_default.test
 files[] = tests/user/views_user_argument_validate.test
 files[] = tests/user/views_user.test
-files[] = tests/views_ui.test
+
+; Temporarily moved from views_ui.info
+files[] = plugins/views_wizard/views_ui_base_views_wizard.class.php
diff --git a/views.module b/views.module
index 51a3bcb..78de4c5 100644
--- a/views.module
+++ b/views.module
@@ -160,6 +160,13 @@ function views_theme($existing, $type, $theme, $path) {
     'variables' => array('more_url' => NULL, 'link_text' => 'more', 'view' => NULL),
   );
 
+  // Generic container wrapper, to use instead of theme_container when an id
+  // is not desired.
+  $hooks['views_container'] = $base + array(
+    'render element' => 'element',
+    'file' => 'theme/theme.inc',
+  );
+
   // Add theme suggestions which are part of modules.
   foreach (views_get_module_apis() as $info) {
     if (isset($info['template path'])) {
