diff --git a/JobScheduler.inc b/JobScheduler.inc
index fde07d3..71be954 100644
--- a/JobScheduler.inc
+++ b/JobScheduler.inc
@@ -16,7 +16,15 @@ class JobScheduler {
     static $instance;
     if (!isset($instance)) {
       $class = variable_get('job_scheduler_class', 'JobScheduler');
-      $instance = new $class();
+      // We don't manually include files here. Thus if you use a custom class,
+      // you need the Autoload module or similar.
+      if (class_exists($class, TRUE)) {
+        $instance = new $class();
+      }
+      else {
+        // Fallback.
+        $instance = new JobScheduler();
+      }
     }
     return $instance;
   }
diff --git a/job_scheduler.info b/job_scheduler.info
index b4f0d53..7ce7430 100644
--- a/job_scheduler.info
+++ b/job_scheduler.info
@@ -2,3 +2,5 @@ name = Job Scheduler
 description = Scheduler API
 core = 6.x
 php = 5.2
+
+files[] = JobScheduler.inc
diff --git a/job_scheduler.module b/job_scheduler.module
index 2630340..a4ac44e 100644
--- a/job_scheduler.module
+++ b/job_scheduler.module
@@ -18,10 +18,11 @@ function job_scheduler_cron() {
  * Return a JobScheduler object.
  */
 function job_scheduler() {
-  static $included;
-  if (!$included) {
-    require './'. drupal_get_path('module', 'job_scheduler') ."/JobScheduler.inc";
-    $included = TRUE;
+  // In case the Autoload module or similar is installed, this check will
+  // autoload the class file.
+  if (!class_exists('JobScheduler', TRUE)) {
+    // Otherwise we manually include the file.
+    module_load_include('inc', 'job_scheduler', 'JobScheduler');
   }
   return JobScheduler::instance();
 }
