diff --git a/mouseflow.admin.inc b/mouseflow.admin.inc
index 7375823..f95be4c 100644
--- a/mouseflow.admin.inc
+++ b/mouseflow.admin.inc
@@ -41,6 +41,11 @@ function mouseflow_configure_options($form_state) {
     '#type' => 'textarea',
     '#default_value' => variable_get('mouseflow_code', NULL)
   );
+  $form['mouseflow_blocked_ips'] = array(
+    '#title' => t('Please add IP addresses for which you do not want to track separated by commas'),
+    '#type' => 'textarea',
+    '#default_value' => variable_get('mouseflow_blocked_ips', NULL)
+  );
 
 
 
diff --git a/mouseflow.module b/mouseflow.module
index 3a64de4..1e6bfa9 100644
--- a/mouseflow.module
+++ b/mouseflow.module
@@ -19,14 +19,18 @@ function mouseflow_help($path, $arg) {
 
 /**
  *
- * Implementation hook perm
+ * Implementation hook permermission
  *
  */
-function mouseflow_perm() {
-  return array('Configure mouseflow');
+function mouseflow_permission() {
+  return array(
+    'administer mouseflow' => array(
+      'title' => t('Administer Mouseflow'), 
+      'description' => t('Perform administration tasks for mouseflow.'),
+    ),
+  );
 }
 
-
 /**
  *
  * Implementation hook menu
@@ -42,7 +46,7 @@ function mouseflow_menu() {
     'page callback' => 'drupal_get_form',
     'page arguments' => array('mouseflow_configure_options'),
     'access callback' => 'user_access',
-    'access arguments' => array('Configure mouseflow'),
+    'access arguments' => array('administer mouseflow'),
     'type' => MENU_NORMAL_ITEM,
     'file' => 'mouseflow.admin.inc',
   );
@@ -60,16 +64,34 @@ function mouseflow_menu() {
  */
 
 function mouseflow_init() {
+	
+	//get blocked ip addresses to prevent mouseflow from loading
+	$blocked_ip_addresses = array();
+	if(variable_get('mouseflow_blocked_ips', NULL)) {
+		$blocked_ip_addresses_explode = explode(",", variable_get('mouseflow_blocked_ips', NULL));
+		if($blocked_ip_addresses_explode) {
+			foreach($blocked_ip_addresses_explode as $ip_address) {
+				$blocked_ip_addresses[] = trim($ip_address);
+			}
+		}
+   }
 
   //we never record admin pages.
   if(arg(0) != 'admin') {
+	  //check to see if the end user is not in the list of blocked IP addresses
+	  if(!in_array($_SERVER['REMOTE_ADDR'], $blocked_ip_addresses)) {
 
     //ask for the code.
     $data = variable_get('mouseflow_code', NULL);
 
     //if we have the code we will print it.
     if($data != NULL) {
-      drupal_add_html_head($data);
+      $element = array(
+      '#type' => 'markup',
+      '#markup' => $data,
+    );
+     drupal_add_html_head($element, 'jquery-tmpl');
+	}
     }
   }
 }
