diff --git a/app/assets/javascripts/Jit/graphsettings-event-handlers.js b/app/assets/javascripts/Jit/graphsettings-event-handlers.js
index 2ed560d8..27a6c088 100644
--- a/app/assets/javascripts/Jit/graphsettings-event-handlers.js
+++ b/app/assets/javascripts/Jit/graphsettings-event-handlers.js
@@ -1,4 +1,7 @@
 function selectEdgeOnClickHandler(adj, e) {
+  
+  if (Mconsole.busy) return;
+  
   //editing overrides everything else
   if (e.altKey) {
     editEdge(adj, e);
@@ -25,6 +28,9 @@ function selectEdgeOnClickHandler(adj, e) {
 }//selectEdgeOnClickHandler
 
 function selectNodeOnClickHandler(node, e) {
+
+  if (Mconsole.busy) return;
+
   //set final styles
   if (!e.shiftKey) {
       Mconsole.graph.eachNode(function (n) {
diff --git a/app/assets/javascripts/Jit/graphsettings.js b/app/assets/javascripts/Jit/graphsettings.js
index 83d67e16..6c3eb3bc 100644
--- a/app/assets/javascripts/Jit/graphsettings.js
+++ b/app/assets/javascripts/Jit/graphsettings.js
@@ -123,9 +123,29 @@ function graphSettings(type) {
       } else if (node && !node.nodeFrom) {
         //node is actually a node :)
         if (!Mconsole.busy) {
-          selectNodeOnClickHandler(node, e);
           Mconsole.onClick(node.id, {  
-            hideLabels: false  
+            hideLabels: false,
+            onComplete: function() {
+              selectNodeOnClickHandler(node, e);
+              $('h1.index').html('Viewing Topic: ' + node.name);
+              window.history.pushState(node.name, "Metamaps", "/topics/" + node.id);
+              var myA = $.ajax({
+                  type: "Get",
+                  url: "/topics/" + node.id + "?format=json",
+                  success: function(data) {
+                    console.log(data);
+                    Mconsole.op.morph(data, {  
+                      type: 'fade',  
+                      duration: 1500,  
+                      hideLabels: false,  
+                      transition: $jit.Trans.Quart.easeOut  
+                    });
+                  },
+                  error: function(){
+                    alert('failure');
+                  }
+                });
+            }            
           });
         }
       } else {
@@ -277,6 +297,9 @@ var nodeSettings = {
 
 
 function onMouseMoveHandler(node, eventInfo, e) {
+  
+  if (Mconsole.busy) return;
+
   var node = eventInfo.getNode();
   var edge = eventInfo.getEdge();
   
diff --git a/app/assets/javascripts/Jit/loadgraphs.js b/app/assets/javascripts/Jit/loadgraphs.js
index 63f7f630..8a5f03db 100644
--- a/app/assets/javascripts/Jit/loadgraphs.js
+++ b/app/assets/javascripts/Jit/loadgraphs.js
@@ -81,6 +81,7 @@ function initialize(type, loadLater){
   
   // load JSON data.
   if (!loadLater) {
+      Mconsole.busy = true;
   	  Mconsole.loadJSON(json);
 	  
 	  // choose how to plot and animate the data onto the screen
@@ -97,7 +98,10 @@ function initialize(type, loadLater){
 		  
 		  chooseAnimate = {  
 			modes:['polar'],  
-			duration: 2000  
+			duration: 2000,
+      onComplete: function() {
+         Mconsole.busy = false;
+       }
 		  };
 	  }
 	  else if ( type == "arranged" ) {
@@ -114,7 +118,10 @@ function initialize(type, loadLater){
 		  chooseAnimate = {
 			 modes: ['linear'],
 			 transition: $jit.Trans.Quad.easeInOut,
-			 duration: 2500
+			 duration: 2500,
+       onComplete: function() {
+         Mconsole.busy = false;
+        }
 		   };
 	  }
 	  else if ( type == "chaotic" ) {
@@ -124,7 +131,10 @@ function initialize(type, loadLater){
 		  chooseAnimate = {
 			 modes: ['linear'],
 			 transition: $jit.Trans.Elastic.easeOut,
-			 duration: 2500
+			 duration: 2500,
+       onComplete: function() {
+         Mconsole.busy = false;
+        }
 		   };
 	  }
 	  
diff --git a/app/assets/javascripts/Jit/onCreateLabelHandler.js b/app/assets/javascripts/Jit/onCreateLabelHandler.js
index 533a865c..6fc4dd53 100644
--- a/app/assets/javascripts/Jit/onCreateLabelHandler.js
+++ b/app/assets/javascripts/Jit/onCreateLabelHandler.js
@@ -61,6 +61,13 @@ function generateShowcardHTML() {
            height="50"                                                        \
            width="50"                                                         \
            src="$_imgsrc_$" />                                                \
+        <div class="cardSettings">                                            \
+          <div class="mapPerm"                                                \
+               title="$_permission_$">                                        \
+               $_mk_permission_$                                              \
+          </div>                                                              \
+          $_edit_permission_$                                                 \
+        </div>                                                                \
         <span class="title">                                                  \
           <span class="best_in_place best_in_place_name"                      \
                 data-url="/topics/$_id_$"                                     \
@@ -104,7 +111,7 @@ function generateShowcardHTML() {
 function replaceVariables(html, node) {
   //link is rendered differently if user is logged out or in
   var go_link, a_tag, close_a_tag;
-  if (userid == null) {
+  if (! authorizeToEdit(node)) {
     go_link = '';
     if (node.getData("link") != "") {
       a_tag = '<a href="' + node.getData("link") + '">';
@@ -145,7 +152,42 @@ function replaceVariables(html, node) {
 
   var desc_nil = "<span class='gray'>Click to add description.</span>";
   var link_nil = "<span class='gray'>Click to add link.</span>";
-
+  
+  var edit_perm = '';
+  if (userid == node.getData("userid")) {
+      edit_perm = '                                                  \
+        <div class="permActivator">                                  \
+          <div class="editSettings">                                 \
+            <span>Permissions:&nbsp;</span>                          \
+            <span title="Click to Edit">                             \
+              <span class="best_in_place best_in_place_permission"   \
+                    id="best_in_place_topic_$_id_$_permission"       \
+                    data-url="/topics/$_id_$"                        \
+                    data-object="topic"                              \
+                    data-collection=$_permission_choices_$           \
+                    data-attribute="permission"                      \
+                    data-type="select"                               \
+                    data-value="$_permission_$">                     \
+                $_permission_$                                       \
+              </span>                                                \
+            </span>                                                  \
+            <div class="clearfloat"></div>                           \
+          </div>                                                     \
+        </div>';
+  }
+  var permissions = ['commons','public','private'];
+  var permission_choices = "'[";
+  for (var i in permissions) {
+    permission_choices += '["' + permissions[i] + '","' + permissions[i] + '"],';
+  }
+  //remove trailing comma and add ]
+  permission_choices = permission_choices.slice(0, -1);
+  permission_choices += "]'";
+  edit_perm = edit_perm.replace(/\$_permission_choices_\$/g, permission_choices);
+  
+  html = html.replace(/\$_edit_permission_\$/g, edit_perm);
+  html = html.replace(/\$_permission_\$/g, node.getData("permission"));
+  html = html.replace(/\$_mk_permission_\$/g, mk_permission(node));
   html = html.replace(/\$_id_\$/g, node.id);
   html = html.replace(/\$_metacode_\$/g, node.getData("metacode"));
   html = html.replace(/\$_imgsrc_\$/g, imgArray[node.getData("metacode")].src);
@@ -156,14 +198,14 @@ function replaceVariables(html, node) {
   html = html.replace(/\$_go_link_\$/g, go_link);
   html = html.replace(/\$_a_tag_\$/g, a_tag);
   html = html.replace(/\$_close_a_tag_\$/g, close_a_tag);
-  if (node.getData("link") == "" && userid != null) {
+  if (node.getData("link") == "" && authorizeToEdit(node)) {
     html = html.replace(/\$_link_\$/g, link_nil);
   } else {
     html = html.replace(/\$_link_\$/g, node.getData("link"));
   }
 
   html = html.replace(/\$_desc_nil_\$/g, desc_nil);
-  if (node.getData("desc") == "" && userid != null) {
+  if (node.getData("desc") == "" && authorizeToEdit(node)) {
     //logged in but desc isn't there so it's invisible
     html = html.replace(/\$_desc_\$/g, desc_nil);
   } else {
@@ -235,6 +277,7 @@ function hideCard(node) {
 }
 
 function bindCallbacks(showCard, nameContainer, node) {
+  
    // add some events to the label
   $(showCard).find('img.icon').click(function(){
     hideCard(node);
@@ -285,4 +328,51 @@ function bindCallbacks(showCard, nameContainer, node) {
     var link = $(this).html();
     $(showCard).find('.go-link').attr('href', link);
   });
+  
+  var sliding2 = false; 
+	var lT1,lT2;
+  $(showCard).find(".permActivator").bind('mouseover', 
+        function () { 
+          clearTimeout(lT2);
+          that = this;       
+          lT1 = setTimeout(function() {
+            if (! sliding2) { 
+              sliding2 = true;            
+                $(that).animate({
+                  width: '203px',
+                  height: '37px'
+                }, 300, function() {
+                  sliding2 = false;
+                });
+            } 
+          }, 300);
+        });
+    
+    $(showCard).find(".permActivator").bind('mouseout',    
+        function () {
+          clearTimeout(lT1);
+          that = this;        
+          lT2 = setTimeout(function() { 
+			      if (! sliding2) { 
+				      sliding2 = true; 
+				      $(that).animate({
+					      height: '16px',
+                width: '16px'
+				      }, 300, function() {
+					      sliding2 = false;
+				      });
+			      } 
+		      },800); 
+        } 
+    );
+    
+  //bind best_in_place ajax callbacks
+  $(showCard).find('.best_in_place_permission').bind("ajax:success", function() {
+    var permission = $(this).html();
+    var el = $(this).parents('.cardSettings').find('.mapPerm');
+    el.attr('title', permission);
+    if (permission == "commons") el.html("co");
+    else if (permission == "public") el.html("pu");
+    else if (permission == "private") el.html("pr");
+  });
 }
diff --git a/app/assets/javascripts/Jit/permissions.js b/app/assets/javascripts/Jit/permissions.js
index e08c47f1..3c372dd3 100644
--- a/app/assets/javascripts/Jit/permissions.js
+++ b/app/assets/javascripts/Jit/permissions.js
@@ -2,4 +2,10 @@
 function authorizeToEdit(obj) {
   if (userid && (obj.data.$permission == "commons" || obj.data.$userid == userid)) return true;
   else return false;
+}
+
+function mk_permission(obj) {
+  if (obj.getData("permission") == "commons") return "co";
+  else if (obj.getData("permission") == "public") return "pu";
+  else if (obj.getData("permission") == "private") return "pr";
 }
\ No newline at end of file
diff --git a/app/assets/javascripts/Jit/select-edit-delete-nodes-and-edges.js b/app/assets/javascripts/Jit/select-edit-delete-nodes-and-edges.js
index 98dcfbff..7de4977c 100644
--- a/app/assets/javascripts/Jit/select-edit-delete-nodes-and-edges.js
+++ b/app/assets/javascripts/Jit/select-edit-delete-nodes-and-edges.js
@@ -46,7 +46,7 @@ function editEdge(edge, e) {
       $('#edit_synapse input').focus();
       $('#edit_synapse').show();
   }
-  else if (! authorizeToEdit(edge)) {
+  else if ((! authorizeToEdit(edge)) && userid) {
     alert("You don't have the permissions to edit this synapse.");
   }
 }
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
index 0d14278c..02c9aa93 100644
--- a/app/assets/javascripts/application.js
+++ b/app/assets/javascripts/application.js
@@ -84,51 +84,7 @@ var labelType, useGradients, nativeTextSupport, animate, json, Mconsole = null,
         } 
     );
   
-
-  // controls the sliding hover of the settings for cards
-	var sliding2 = false; 
-	var lT1,lT2;
-    $(".permActivator").hover( 
-        function () { 
-          clearTimeout(lT2);
-          that = this;       
-          lT1 = setTimeout(function() {
-            if (! sliding2) { 
-              sliding2 = true;            
-                $(that).animate({
-                  width: '203px',
-                  height: '37px'
-                }, 300, function() {
-                  sliding2 = false;
-                });
-            } 
-          }, 300);
-        },  
-        function () {
-          clearTimeout(lT1);
-          that = this;        
-          lT2 = setTimeout(function() { 
-			      if (! sliding2) { 
-				      sliding2 = true; 
-				      $(that).animate({
-					      height: '16px',
-                width: '16px'
-				      }, 300, function() {
-					      sliding2 = false;
-				      });
-			      } 
-		      },800); 
-        } 
-    );
-    //bind best_in_place ajax callbacks
-  $('.best_in_place_permission').bind("ajax:success", function() {
-    var permission = $(this).html();
-    var el = $(this).parents('.cardSettings').find('.mapPerm');
-    el.attr('title', permission);
-    if (permission == "commons") el.html("co");
-    else if (permission == "public") el.html("pu");
-    else if (permission == "private") el.html("pr");
-  });
+  addHoverForSettings();
   
   //bind best_in_place ajax callbacks
   $('.best_in_place_metacode').bind("ajax:success", function() {
@@ -147,6 +103,59 @@ var labelType, useGradients, nativeTextSupport, animate, json, Mconsole = null,
 	
 });
 
+function addHoverForSettings() {
+  // controls the sliding hover of the settings for cards
+  $(".permActivator").unbind('mouseover');
+  $(".permActivator").unbind('mouseout');
+	var sliding2 = false; 
+	var lT1,lT2;
+    $(".permActivator").bind('mouseover', 
+        function () { 
+          clearTimeout(lT2);
+          that = this;       
+          lT1 = setTimeout(function() {
+            if (! sliding2) { 
+              sliding2 = true;            
+                $(that).animate({
+                  width: '203px',
+                  height: '37px'
+                }, 300, function() {
+                  sliding2 = false;
+                });
+            } 
+          }, 300);
+        });
+    
+    $(".permActivator").bind('mouseout',    
+        function () {
+          clearTimeout(lT1);
+          that = this;        
+          lT2 = setTimeout(function() { 
+			      if (! sliding2) { 
+				      sliding2 = true; 
+				      $(that).animate({
+					      height: '16px',
+                width: '16px'
+				      }, 300, function() {
+					      sliding2 = false;
+				      });
+			      } 
+		      },800); 
+        } 
+    );
+    
+  $('.best_in_place_permission').unbind("ajax:success");
+    //bind best_in_place ajax callbacks
+  $('.best_in_place_permission').bind("ajax:success", function() {
+    var permission = $(this).html();
+    var el = $(this).parents('.cardSettings').find('.mapPerm');
+    el.attr('title', permission);
+    if (permission == "commons") el.html("co");
+    else if (permission == "public") el.html("pu");
+    else if (permission == "private") el.html("pr");
+  });
+}
+
 // this is to save the layout of a map
 function saveLayoutAll() {
   var coor = "";
diff --git a/app/views/maps/edit.html.erb b/app/views/maps/edit.html.erb
index f52f29c4..dedb03fa 100644
--- a/app/views/maps/edit.html.erb
+++ b/app/views/maps/edit.html.erb
@@ -12,6 +12,7 @@
   <% if @map.user == user %>
     <label for="map_perm">Permission</label>
     <%= form.select :permission, options_for_select(['commons', 'public', 'private'], @map.permission) %>
+    <p>Topics and synapses you create newly on this map will be set by default to the permissions of your map.<br>Permissions of already created topics will not be changed to your new map permission.</p>
   <% end %>
   <%= form.submit "Update", class: "update" %>
 <% end %>