diff --git a/gui/html/chronoshare.js b/gui/html/chronoshare.js
index d94bb5f..cc1f9ae 100644
--- a/gui/html/chronoshare.js
+++ b/gui/html/chronoshare.js
@@ -63,10 +63,6 @@
     CHRONOSHARE = new ChronoShare (PARAMS.user, PARAMS.folder);
     CHRONOSHARE.run ();
 
-    $("a").click (function () {
-        nav_anchor (this.href)
-    });
-
     $(window).on('hashchange', function() {
         nav_anchor (window.location.href);
     });
@@ -103,8 +99,10 @@
         $("#loader").fadeOut (500); // ("hidden");
         if (kind == Closure.UPCALL_CONTENT) {
             convertedData = DataUtils.toString (upcallInfo.contentObject.content);
-            $("#json").text (convertedData);
-            $("#json").removeClass ("hidden");
+	    if (PARAMS.debug) {
+		$("#json").text (convertedData);
+		$("#json").removeClass ("hidden");
+	    }
             data = JSON.parse (convertedData);
 
             // error handling?
@@ -147,13 +145,12 @@
                     }
 
                     document.location = url;
-                    nav_anchor (document.location.href);
                 });
 
 		row.append ($("<td />", {"class": "border-left"}).text (file.filename));
 		row.append ($("<td />").text (file.version));
 		row.append ($("<td />").text (new Date (file.timestamp)));
-		row.append ($("<td />")
+		row.append ($("<td />", {"class": "border-right"})
 			    .append ($("<userName />").text (file.owner.userName))
 			    .append ($("<seqNo> /").text (file.owner.seqNo)));
 
@@ -181,8 +178,10 @@
         $("#loader").fadeOut (500); // ("hidden");
         if (kind == Closure.UPCALL_CONTENT) {
             convertedData = DataUtils.toString (upcallInfo.contentObject.content);
-            $("#json").text (convertedData);
-            $("#json").removeClass ("hidden");
+	    if (PARAMS.debug) {
+		$("#json").text (convertedData);
+		$("#json").removeClass ("hidden");
+	    }
             data = JSON.parse (convertedData);
 
             // error handling?
diff --git a/gui/html/index.html b/gui/html/index.html
index 0b21c61..24de8ca 100644
--- a/gui/html/index.html
+++ b/gui/html/index.html
@@ -53,7 +53,7 @@
     </article>
 
     <footer>
-      <grey>Powered by</grey><green> NDN.JS</green><grey>.<grey>
+      <grey>Powered by </grey><a target="_blank" href="http://github.com/remap/ndn-js"><green>NDN.JS</green></a><grey>.</grey>
     </footer>
 
     <script src="detect.js"></script>
diff --git a/gui/html/style.css b/gui/html/style.css
index 4b7322d..cd16f8c 100644
--- a/gui/html/style.css
+++ b/gui/html/style.css
@@ -205,12 +205,18 @@
 
 #loader {
     position: absolute;
-    top: 50%;
-    left: 50%;
-    width: 128px;
-    height: 128px;
-    margin-top: -64px; /* Half the height */
-    margin-left: -64px; /* Half the width */
+    top: 0;
+    left: 0;
+    /* top: 50%; */
+    /* left: 50%; */
+    /* width: 128px; */
+    /* height: 128px; */
+    /* margin-top: -64px; /\* Half the height *\/ */
+    /* margin-left: -64px; /\* Half the width *\/ */
+}
+#loader img {
+    width: 64px;
+    height: 64px;
 }
 
 userName {
