diff --git a/cufon.install b/cufon.install
index 5fda0e2..1e44673 100644
--- a/cufon.install
+++ b/cufon.install
@@ -19,3 +19,21 @@ function cufon_update_6000() {
           WHERE name = 'cufon'";
   db_query($sql);
 }
+
+/**
+ * Implementation of hook_requirements().
+ */
+function cufon_requirements($phase) {
+  $requirements = array();
+  $t = get_t();
+  $js = dirname(__FILE__) . '/js';
+  $file_exists = file_exists($js . '/cufon-yui.js');
+  if ($phase == 'runtime' || !$file_exists) {
+    $requirements['cufon'] = array(
+      'title' => $t('Cufon'), 
+      'value' => $file_exists ? $t('Cufon library installed') : $t('<strong>Cuf—n:</strong> You must download <a href="http://cufon.shoqolate.com/js/cufon-yui.js">cufon-yui.js</a> and install it to <code>@js</code>.', array('@js' => $js)), 
+      'severity' => $file_exists ? REQUIREMENT_INFO : REQUIREMENT_ERROR,
+    );
+  }
+  return $requirements;
+}
\ No newline at end of file
diff --git a/cufon.module b/cufon.module
index a8caeca..b641968 100644
--- a/cufon.module
+++ b/cufon.module
@@ -15,19 +15,6 @@ function cufon_perm() {
 }
 
 /**
- * Implementation of hook_init().
- */
-function cufon_init() {
-  $js = drupal_get_path('module', 'cufon') .'/js';
-  if (!file_exists($js .'/cufon-yui.js')) {
-    drupal_set_message(t('<strong>CufÃ³n:</strong> You must download <a href="http://cufon.shoqolate.com/js/cufon-yui.js">cufon-yui.js</a> and install it to <code>@js</code>.', array('@js' => $js)));
-    return;
-  }
-  drupal_add_js($js .'/cufon-yui.js', 'module');
-  drupal_add_js($js .'/cufon-drupal.js', 'module', 'footer');
-}
-
-/**
  * Implementation of hook_menu().
  */
 function cufon_menu() {
@@ -92,14 +79,25 @@ function _cufon_get_font_family($filename) {
   return $family;
 }
 
+/**
+ * Implementation of hook_theme_registry_alter().
+ */
+function cufon_theme_registry_alter(&$theme_registry) {
+  if (isset($theme_registry['page'])) {
+    if (!empty($theme_registry['page']['preprocess functions'])) {
+      // If jquery_update's preprocess function is there already, remove it.
+      if ($key = array_search('cufon_preprocess_page', $theme_registry['page']['preprocess functions'])) {
+        unset($theme_registry['page']['preprocess functions'][$key]);
+      }
+    }
+    // Now tack it on at the end so it runs after everything else.
+    array_unshift($theme_registry['page']['preprocess functions'], 'cufon_preprocess_page');
+  }
+}
+
 
 /**
- * Implementation of template_preprocess_page().
- *
- * We can't call _cufon_discover_fonts from hook_init, lest we run the risk of
- * improperly resolving the theme path.  To get around this, we add the 
- * Javascript settings to the page preprocessor and re-render the 'scripts'
- * variable.
+ * Implementation of hook_preprocess_page().
  */
 function cufon_preprocess_page(&$vars) {
   foreach (_cufon_discover_fonts() as $filename => $name) {
@@ -107,7 +105,7 @@ function cufon_preprocess_page(&$vars) {
   }
   $selectors = variable_get('cufon_selectors', array());
   drupal_add_js(array('cufonSelectors' => $selectors), 'setting');
-
-  $vars['scripts'] = drupal_get_js();
-  $vars['closure'] = theme('closure'); 
+  $js =  dirname(__FILE__) .'/js';
+  drupal_add_js($js .'/cufon-yui.js', 'module');
+  drupal_add_js($js .'/cufon-drupal.js', 'module', 'footer');
 }
