diff --git a/css_delivery.module b/css_delivery.module
index 8c0f583..30063cd 100644
--- a/css_delivery.module
+++ b/css_delivery.module
@@ -17,6 +17,19 @@ define("CSS_DELIVERY_BUILD_MODE", FALSE);
 define("CSS_DELIVERY_BUILD_INLINE", FALSE);
 
 /**
+ * Implements hook_permission().
+ */
+function css_delivery_permission() {
+  return array(
+    'run critical css builds' => array(
+      'title' => t('run critical css builds'),
+      'restrict access' => TRUE,
+      'description' => t('Run the critical css generator code.'),
+    ),
+  );
+}
+
+/**
  * Implements hook_menu().
  */
 function css_delivery_menu() {
@@ -33,7 +46,7 @@ function css_delivery_menu() {
     ),
     'css_delivery/postback' => array(
       'page callback' => 'css_delivery_postback',
-      'access arguments' => array('administer site configuration'),
+      'access arguments' => array('run critical css builds'),
       'file' => 'css_delivery.pages.inc',
     ),
   );
@@ -52,6 +65,7 @@ function css_delivery_page_alter(&$page) {
 
   // Add builder bits if build mode is enabled.
   if (css_delivery_build_enabled()) {
+    drupal_page_is_cacheable(FALSE);
     _css_delivery_builder($page);
   }
 }
@@ -60,6 +74,9 @@ function css_delivery_page_alter(&$page) {
  * Invoke the Critical CSS builder tools.
  */
 function _css_delivery_builder(&$page) {
+  $GLOBALS['conf']['advagg_mod_js_footer_inline_alter'] = 0;
+  $GLOBALS['conf']['advagg_mod_js_defer'] = 0;
+
   $exclude_selectors = trim(variable_get('css_delivery_build_exclude_selectors', ''));
   $exclude_selectors = ($exclude_selectors) ? preg_split('/\R/', $exclude_selectors) : array();
   $exclude_selectors[] = '#css-delivery-builder-wrapper';
@@ -85,11 +102,13 @@ function _css_delivery_builder(&$page) {
   // is enabled, the origin of the script cannot be ensured.
   $parser = _css_delivery_js_contents($module_path . '/js/parser.js');
   drupal_add_js($parser, $options);
+//   drupal_add_js($module_path . '/js/parser.js');
   // It is not required to load the builder script inline but it is needed to
   // maintain script execution order with the parser.
   $options['weight']++;
   $builder = _css_delivery_js_contents($module_path . '/js/critical_css_builder.js');
-  drupal_add_js($builder, $options);
+//   drupal_add_js($builder, $options);
+  drupal_add_js($module_path . '/js/critical_css_builder.js');
 
   $options['media'] = 'screen';
   $contents = _css_delivery_load_inline_css_contents($module_path . '/css/css_delivery.builder.css');
@@ -349,7 +368,17 @@ function css_delivery_enabled() {
  * Quickly determine if css delivery optimization build mode is enabled.
  */
 function css_delivery_build_enabled() {
-  return (!variable_get('preprocess_css', FALSE) && variable_get('css_delivery_build_mode', CSS_DELIVERY_BUILD_MODE) && _css_delivery_visibility_pages() && user_access('run critical css builds')) ? TRUE : FALSE;
+  if (!variable_get('css_delivery_build_mode', CSS_DELIVERY_BUILD_MODE)
+    || !_css_delivery_visibility_pages()
+    || !user_access('run critical css builds')
+  ) {
+    return FALSE;
+  }
+  if (variable_get('preprocess_css', FALSE)) {
+    // Disable preprocess_css.
+    $GLOBALS['conf']['preprocess_css'] = FALSE;
+  }
+  return TRUE;
 }
 
 /**
diff --git a/js/critical_css_builder.js b/js/critical_css_builder.js
index 041bbe1..2447cf9 100644
--- a/js/critical_css_builder.js
+++ b/js/critical_css_builder.js
@@ -5,11 +5,11 @@
   Drupal.behaviors.criticalCss = {
     attach: function(context, settings) {
 
-      var $button = $('#css-delivery-builder-wrapper > .do-build');
+      var button = $('#css-delivery-builder-wrapper > .do-build');
 
       $('body').once('css-delivery-builder');
 
-      $button.once('critical-css').click(function() {
+      button.once('critical-css').click(function() {
         w.scrollTo(0, 0);
         $(this).attr('disabled', 'disabled');
         Drupal.criticalCss.updateStatus(Drupal.t('CSS is being generated...'));
@@ -19,7 +19,7 @@
         }, 0);
       });
 
-      if ($button.length) {
+      if (button.length) {
         Drupal.criticalCss.updateStatus(Drupal.t('Ready to build.'));
       }
     }
@@ -32,6 +32,7 @@
     parse: function(options) {
       var parser = new CSSCriticalPath(w, d, options);
       this.css = parser.generateCSS();
+      console.log(this.css);
       $('#css-delivery-builder-wrapper > .do-build').attr('disabled', '');
       Drupal.criticalCss.updateStatus(Drupal.t('Done. <a class="postback-link" href="#save" data-op="save">Save</a> the generated critical CSS in configuration or alternatively <a class="postback-link" href="#download" data-op="download">Download</a> the generated critical CSS to a file.'));
 
