diff --git a/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.theme.inc b/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.theme.inc
index 9f489c6..82030cd 100644
--- a/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.theme.inc
+++ b/contrib/views_slideshow_cycle/theme/views_slideshow_cycle.theme.inc
@@ -70,6 +70,7 @@ function template_preprocess_views_slideshow_cycle_main_frame(&$vars) {
   }
 
   drupal_add_js(array('viewsSlideshowCycle' => array('#views_slideshow_cycle_main_' . $vss_id => $settings)), 'setting');
+  drupal_add_library('views_slideshow_cycle', 'views_slideshow_cycle');
 
   // Add the hoverIntent plugin.
   if (isset($settings['advanced_pagerevent']) && $settings['advanced_pagerevent'] == 'hoverIntent') {
diff --git a/contrib/views_slideshow_cycle/views_slideshow_cycle.module b/contrib/views_slideshow_cycle/views_slideshow_cycle.module
index d22f080..86867c9 100644
--- a/contrib/views_slideshow_cycle/views_slideshow_cycle.module
+++ b/contrib/views_slideshow_cycle/views_slideshow_cycle.module
@@ -6,27 +6,53 @@
  */
 
 /**
- * Implements hook_init().
+ * Implements hook_library().
  */
-function views_slideshow_cycle_init() {
-  // Load jQuery Cycle
+function views_slideshow_cycle_library() {
+  $libraries = array();
+
+  $libraries['views_slideshow_cycle'] = array(
+    'title' => 'Views slideshow cycle',
+    'version' => '1.0',
+    'js' => array(
+      drupal_get_path('module', 'views_slideshow_cycle') . '/js/views_slideshow_cycle.js' => array(),
+    ),
+    'css' => array(
+      drupal_get_path('module', 'views_slideshow_cycle') . '/views_slideshow_cycle.css' => array(
+        'type' => 'file',
+        'media' => 'screen',
+      ),
+    ),
+    'dependencies' => array(
+      array('views_slideshow_cycle', 'jcycle'),
+    ),
+  );
+
+  $libraries['jcycle'] = array(
+    'title' => 'jCycle',
+    'version' => '1.0',
+    'dependencies' => array(
+      array('views_slideshow_cycle', 'json2'),
+    ),
+  );
+
   $cycle_path = libraries_get_path('jquery.cycle');
   if (!empty($cycle_path) && file_exists($cycle_path . '/jquery.cycle.all.min.js')) {
-    drupal_add_js($cycle_path . '/jquery.cycle.all.min.js');
+    $libraries['jcycle']['js'][$cycle_path . '/jquery.cycle.all.min.js'] = array();
   }
 
+  $libraries['json2'] = array(
+    'title' => 'jCycle',
+    'version' => '1.0',
+  );
+
   // Load Json2
   $json_path = libraries_get_path('json2');
   if (!empty($json_path) && file_exists($json_path . '/json2.js')) {
-    drupal_add_js($json_path . '/json2.js');
+    $libraries['json2']['js'][$json_path . '/json2.js'] = array();
   }
 
-  // Load our cycle js
-  $module_path = drupal_get_path('module', 'views_slideshow_cycle');
-  drupal_add_js($module_path . '/js/views_slideshow_cycle.js');
-
-  // Load our cycle css
-  drupal_add_css($module_path . '/views_slideshow_cycle.css', 'file');
+  return $libraries;
 }
 
 /**
diff --git a/theme/views_slideshow.theme.inc b/theme/views_slideshow.theme.inc
index 29b83dd..c6bc10c 100644
--- a/theme/views_slideshow.theme.inc
+++ b/theme/views_slideshow.theme.inc
@@ -63,6 +63,7 @@ function template_preprocess_views_slideshow(&$vars) {
     )
   );
   drupal_add_js($js_settings, 'setting');
+  drupal_add_library('views_slideshow', 'views_slideshow');
 
   /**
    * Process Skins
@@ -166,6 +167,7 @@ function theme_views_slideshow_pager_widget_render($vars) {
   );
 
   drupal_add_js($js_vars, 'setting');
+  drupal_add_library('views_slideshow', 'views_slideshow');
 
   // Create some attributes
   $attributes['class'] = 'widget_pager widget_pager_' . $vars['location'];
@@ -190,6 +192,7 @@ function template_preprocess_views_slideshow_pager_fields_render(&$vars) {
 
   // Add the settings to the page.
   drupal_add_js($js_vars, 'setting');
+  drupal_add_library('views_slideshow', 'views_slideshow');
 
   $vars['classes_array'][] = $vars['attributes']['class'];
   $vars['widget_id'] = $vars['attributes']['id'];
@@ -240,6 +243,7 @@ function theme_views_slideshow_controls_widget_render($vars) {
   );
 
   drupal_add_js($js_vars, 'setting');
+  drupal_add_library('views_slideshow', 'views_slideshow');
 
   $output = '';
   if (count($vars['rows']) > 1) {
diff --git a/views_slideshow.module b/views_slideshow.module
index cf85848..c2ed5fb 100644
--- a/views_slideshow.module
+++ b/views_slideshow.module
@@ -89,14 +89,26 @@ function views_slideshow_help($path, $arg) {
 }
 
 /**
- * Implements hook_init().
+ * Implements hook_library().
  */
-function views_slideshow_init() {
-  // Load javascript on the page in init to help fool caching.
-  drupal_add_js(drupal_get_path('module', 'views_slideshow') . '/js/views_slideshow.js');
+function views_slideshow_library() {
+  $libraries = array();
+
+  $libraries['views_slideshow'] = array(
+    'title' => 'Views slideshow',
+    'version' => '1.0',
+    'js' => array(
+      drupal_get_path('module', 'views_slideshow') . '/js/views_slideshow.js' => array(),
+    ),
+    'css' => array(
+      drupal_get_path('module', 'views_slideshow') . '/views_slideshow.css' => array(
+        'type' => 'file',
+        'media' => 'screen',
+      ),
+    ),
+  );
 
-  $vs_path = drupal_get_path('module', 'views_slideshow');
-  drupal_add_css($vs_path . '/views_slideshow.css');
+  return $libraries;
 }
 
 /**
