diff --git a/external_iframe.module b/external_iframe.module
index e65fc05..15a5f6d 100644
--- a/external_iframe.module
+++ b/external_iframe.module
@@ -6,6 +6,8 @@
  *
  */
 
+define('EXTERNAL_IFRAME_BASE_PATH', 'external');
+
 /**
   * Implements hook_permission().
   *
@@ -25,7 +27,7 @@ function external_iframe_permission() {
   *
   */
 function external_iframe_menu() {
-  $items['external'] = array(
+  $items[EXTERNAL_IFRAME_BASE_PATH] = array(
     'title' => 'External Site',
     'access callback' => TRUE,
     'page callback' => 'external_iframe_blank',
@@ -64,7 +66,7 @@ function external_iframe_admin($form, &$form_state) {
   $form['external_iframe_parent_container'] = array(
     '#type' => 'textfield',
     '#title' => t('Enter parent container for where External Iframe should search for and rewrite external links'),
-    '#default_value' => variable_get('external_iframe_parent_container', 'body'),
+    '#default_value' => variable_get('external_iframe_parent_container', null),
     '#description' => t('Use any valid js identifier ie. body #container .node'),
   );
   $form['classes'] = array(
@@ -80,7 +82,13 @@ function external_iframe_admin($form, &$form_state) {
     '#type' => 'checkbox',
     '#title' => t('Negate'),
     '#default_value' => variable_get('external_iframe_negate', null),
-    '#description' => t('This option will rewrite all external links except those with the classes listed above'), 
+    '#description' => t('This option will rewrite all external links except those with the classes listed above'),
+  );
+  $form['classes']['external_iframe_allow_internal'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Allow Internal'),
+    '#default_value' => variable_get('external_iframe_allow_internal', FALSE),
+    '#description' => t('Allow internal urls to be put in urls.'),
   );
   $form['exclude'] = array(
     '#title' => t('Exclude Domains'),
@@ -100,7 +108,6 @@ function external_iframe_admin($form, &$form_state) {
     '#required' => TRUE,
     '#element_validate' => array('external_iframe_life_validate'),
   );
-  $form['#redirect'] = FALSE;
   return system_settings_form($form);
 }
 
@@ -135,7 +142,7 @@ function external_iframe_error() {
 function _external_iframe_error_direct() {
   drupal_set_message(t('URL fails validation.'), $type = 'warning');
   drupal_goto('404');
-  exit();  
+  exit();
 }
 
 /**
@@ -181,7 +188,9 @@ function theme_external_iframe_javascript() {
       'parent' => $parent,
       'classes' => $classes,
       'negate' => $negate,
-      'exclude' => $exclude
+      'exclude' => $exclude,
+      'basepath' => EXTERNAL_IFRAME_BASE_PATH,
+      'allowinternal' => variable_get('external_iframe_allow_internal', FALSE),
     ),
   );
   drupal_add_js($settings, 'setting');
@@ -193,9 +202,11 @@ function theme_external_iframe_javascript() {
   *
   */
 function external_iframe_init() {
-  if (arg(0) == 'external') {
-    drupal_set_title(t('External Site'));
+  if (arg(0) == EXTERNAL_IFRAME_BASE_PATH) {
     drupal_add_css(drupal_get_path('module', 'external_iframe') . '/external_iframe.css');
+    if (module_exists('admin_menu')) {
+      admin_menu_suppress();
+    }
 
     // VALIDATION
     isset($_GET["url"]) ? $url = $_GET["url"] : _external_iframe_error_direct();
@@ -224,29 +235,30 @@ function external_iframe_init() {
   *
   */
 function external_iframe_preprocess_page(&$variables) {
-  if (arg(0) == 'external') {
+  if (arg(0) == EXTERNAL_IFRAME_BASE_PATH) {
     // find url and check if https argument present
     $url = $_GET['url'];
     $variables['url'] = $url;
-    $variables['theme_hook_suggestions'] = array();
-    $variables['theme_hook_suggestions'][] = 'page__external';
-  }
-
-  // Check if we should add external_iframe.js 
-  $types = variable_get('external_iframe_allowed_types', array());
-  foreach ($types as $key => $value) {
-    if ($value === 0) {
-      unset($types[$key]);
-    }
-  }
-  if (isset($variables['node']) && count($types) == 0) {
+    $variables['referer'] = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $variables['front_page'];
     theme('external_iframe_javascript');
-  } 
-  else if (isset($variables['node']) && in_array($variables['node']->type, $types)) {
-    theme('external_iframe_javascript');    
   }
-  else if (!isset($variables['node'])) {
-    theme('external_iframe_javascript');
+  else {
+    // Check if we should add external_iframe.js
+    $types = variable_get('external_iframe_allowed_types', array());
+    foreach ($types as $key => $value) {
+      if ($value === 0) {
+        unset($types[$key]);
+      }
+    }
+    if (isset($variables['node']) && count($types) == 0) {
+      theme('external_iframe_javascript');
+    }
+    else if (isset($variables['node']) && in_array($variables['node']->type, $types)) {
+      theme('external_iframe_javascript');
+    }
+    else if (!isset($variables['node'])) {
+      theme('external_iframe_javascript');
+    }
   }
 }
 
@@ -273,4 +285,3 @@ function _external_iframe_insert_after_first_element(&$a, $element) {
     array_unshift($a, $first_element, $element);
   }
 }
-
diff --git a/external_iframe_share/external_iframe_share.module b/external_iframe_share/external_iframe_share.module
index 37a5ace..de22064 100644
--- a/external_iframe_share/external_iframe_share.module
+++ b/external_iframe_share/external_iframe_share.module
@@ -54,7 +54,7 @@ function external_iframe_share_admin($form, &$form_state) {
   * Implements hook_preprocess_page().
   */
 function external_iframe_share_preprocess_page(&$variables) {
-  if (arg(0) == 'external') {
+  if (arg(0) == EXTERNAL_IFRAME_BASE_PATH) {
     // find url and check if https argument present
     $widget_type = variable_get('external_iframe_share_style', 'default');
     $variables['external_iframe_share_button'] = theme('share_button', array('type' => $widget_type));
@@ -72,7 +72,7 @@ function _external_iframe_share_img_variable($type = 'default') {
         'width' => '171',
         'height' => '16',
         'alt' => t('Share'),
-        'attributes' => array(),        
+        'attributes' => array(),
       );
       break;
     case 'small':
@@ -81,7 +81,7 @@ function _external_iframe_share_img_variable($type = 'default') {
         'width' => '120',
         'height' => '16',
         'alt' => t('Share'),
-        'attributes' => array(),    
+        'attributes' => array(),
       );
       break;
     case 'minimal':
@@ -90,8 +90,8 @@ function _external_iframe_share_img_variable($type = 'default') {
         'width' => '16',
         'height' => '16',
         'alt' => t('Share'),
-        'attributes' => array(),        
-      );        
+        'attributes' => array(),
+      );
       break;
     case 'large':
       $variables = array(
@@ -99,7 +99,7 @@ function _external_iframe_share_img_variable($type = 'default') {
         'width' => '256',
         'height' => '24',
         'alt' => t('Share'),
-        'attributes' => array(),    
+        'attributes' => array(),
       );
       break;
   }
diff --git a/js/external_iframe.js b/js/external_iframe.js
index 5bee681..3ffee06 100644
--- a/js/external_iframe.js
+++ b/js/external_iframe.js
@@ -2,8 +2,8 @@
 
   Drupal.behaviors.externanaliFrame = {
     attach: function(context, settings) {
-      // Set iframe height 
-        function resizeframe() { 
+      // Set iframe height
+        function resizeframe() {
         var buffer = $('#external-container').height();
         var newHeight = $(window).height();
         var newFrameHeight = newHeight - buffer;
@@ -13,12 +13,12 @@
         resizeframe();
       });
       $(window).load(function() {
-        resizeframe();  
+        resizeframe();
       });
-      
+
 
       // Rewrite external links
-      var appendUrl = Drupal.settings.basePath + 'external?url=';
+      var appendUrl = Drupal.settings.basePath + Drupal.settings.externaliframe.basepath;
       var http_host = location.hostname.split('.');
       if (http_host.length == 3) {
         var host = http_host[1] + '.' + http_host[2];
@@ -27,7 +27,7 @@
       } else if (http_host.length == 1) {
         var host = http_host[0];
       }
-      
+
       // Declare Variables
       var parent = Drupal.settings.externaliframe.parent;
       var classes = Drupal.settings.externaliframe.classes;
@@ -35,10 +35,10 @@
       var excluded = Drupal.settings.externaliframe.exclude;
       var selectors = new Array();
       var i = 0;
-      if (typeof(parent) !== 'undefined' && parent.length > 0) {
+      if (parent.length > 0) {
         parent += ' ';
       }
-           
+
       // Rewrite all external links
       if (classes.length > 0 && classes.indexOf('*') == -1 && negate == 0) {
         for (i=0;i<classes.length;i++) {
@@ -51,20 +51,29 @@
         }
       }
       else if (classes.indexOf('*') >= 0) {
-        for (i=0;i<classes.length;i++) { 
+        for (i=0;i<classes.length;i++) {
           selectors[i] = parent + 'a[href^=http:]:not(.external-nofollow)';
-        }      
+        }
       }
       // Concat array items to string
       var selector = selectors.join(',');
       $(selector).each(
         function(){
-          if(this.href.indexOf(host) == -1 && location.pathname.indexOf('external') == -1) { 
+          if (location.pathname.indexOf(Drupal.settings.externaliframe.basepath) == -1 &&
+              (this.href.indexOf(host) == -1 || Drupal.settings.externaliframe.allowinternal)) {
               var currentUrl = this.href;
               var questionMarkCount = currentUrl.length - currentUrl.replace(/\?/gi, '').length;
               // If currentUrl has two sets of parameters, ignore it ... see http://drupal.org/node/1534486
               if (questionMarkCount < 2) {
-                var newUrl = appendUrl + currentUrl;
+                var addUrl = '';
+                if ($(this).data('externaliframe')) {
+                  addUrl = "/" + $(this).data('externaliframe');
+                }
+                // Internal url - use this by default if no data is given.
+                else if (this.href.indexOf(host) != -1) {
+                  addUrl = "/internal";
+                }
+                var newUrl = appendUrl + addUrl + "?url=" + currentUrl;
                 for (i=0;i<excluded.length;i++) {
                   var str = excluded[i].replace(/(\r\n|\n|\r)/gm,"");;
                   if (currentUrl.indexOf(str) >= 0) {
@@ -74,7 +83,7 @@
                 if (typeof stop == 'undefined') {
                   $(this).attr('href', newUrl);
                 }
-              }               
+              }
           }
         });
        // End of module code
