diff --git a/views.module b/views.module
index 350d735..39bf2b8 100644
--- a/views.module
+++ b/views.module
@@ -61,7 +61,7 @@ function views_api_minimum_version() {
  */
 function views_theme($existing, $type, $theme, $path) {
   $path = drupal_get_path('module', 'views');
-  ctools_include('theme', 'views', 'theme');
+  views_include('theme', 'theme');
 
   // Some quasi clever array merging here.
   $base = array(
@@ -1004,8 +1004,16 @@ function &views_get_current_view() {
 /**
  * Include views .inc files as necessary.
  */
-function views_include($file) {
+function views_include($file, $dir = 'includes') {
   ctools_include($file, 'views');
+  $used = &drupal_static(__FUNCTION__, array());
+
+  $dir = '/' . ($dir ? $dir . '/' : '');
+
+  if (!isset($used[$dir][$file])) {
+    require_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'views') . "$dir$file.inc";
+    $used[$dir][$file] = TRUE;
+  }
 }
 
 /**
