diff --git a/nars-dist/NARS.jar b/nars-dist/NARS.jar
index a1ee14cbd21e15bdcb2017de5a394e624c4b70dc..9f6a6de33a0074b5af935c3e541dcef01c07a0b1 100644
Binary files a/nars-dist/NARS.jar and b/nars-dist/NARS.jar differ
diff --git a/nars_core_java/nars/entity/Stamp.java b/nars_core_java/nars/entity/Stamp.java
index a1fdccd3e0e0adb8023175e153e8793aeb0caa2b..0cf3cc7acb5510f2ade64030a8f9b1cbcaf07699 100644
--- a/nars_core_java/nars/entity/Stamp.java
+++ b/nars_core_java/nars/entity/Stamp.java
@@ -36,6 +36,10 @@ import nars.language.Term;
  * limit.
  */
 public class Stamp implements Cloneable {
+    /**
+     * show stamp or not
+     */
+    public static boolean showStamp=true;
      /**
      * show derivation chain or not
      */
@@ -335,6 +339,8 @@ public class Stamp implements Cloneable {
      */
     @Override
     public String toString() {
+        if(!showStamp)
+            return "";
         StringBuilder buffer = new StringBuilder(" " + Symbols.STAMP_OPENER + creationTime);
         buffer.append(" ").append(Symbols.STAMP_STARTER).append(" ");
         for (int i = 0; i < baseLength; i++) {
diff --git a/nars_core_java/nars/storage/Memory.java b/nars_core_java/nars/storage/Memory.java
index d9326cac522346150510d67210c32c20c75eb8f3..b13447dc413d14465bc731bf31b5c60b7577bd7c 100644
--- a/nars_core_java/nars/storage/Memory.java
+++ b/nars_core_java/nars/storage/Memory.java
@@ -325,14 +325,14 @@ public class Memory {
                 }
                 stamp.addToChain(currentTask.getContent());
             }
-            if (!revised) {
+            if (!revised) { //its a inference rule, we have to do the derivation chain check to hamper cycles
                 for (Term chain1 : chain) {
                     if (task.getContent() == chain1) {
                         recorder.append("!!! Cyclic Reasoning detected: " + task + "\n");
                         return;
                     }
                 }
-            } else //its revision, of course its cyclic, dont apply new stamp policy     
+            } else //its revision, of course its cyclic, apply evidental base policy     
             {
                 for (int i = 0; i < stamp.baseLength(); i++) {
                     for (int j = 0; j < stamp.baseLength(); j++) {
diff --git a/nars_gui/nars/gui/MainWindow.java b/nars_gui/nars/gui/MainWindow.java
index de90b3b7ce7335134f02e18eab86e426a5db95c0..0ee0dbca3690a28400b64eb4bd0dfe5f9c35546e 100644
--- a/nars_gui/nars/gui/MainWindow.java
+++ b/nars_gui/nars/gui/MainWindow.java
@@ -158,6 +158,7 @@ public class MainWindow extends NarsFrame implements ActionListener, OutputChann
         addJMenuItem(m, "Inference Log");
         addJMenuItem(m, "Input Window");
         addJMenuItem(m, "Show/Hide Derivations");
+        addJMenuItem(m, "Show/Hide Stamp");
         m.addActionListener(this);
         menuBar.add(m);
 
@@ -336,6 +337,8 @@ public class MainWindow extends NarsFrame implements ActionListener, OutputChann
                 silentW.setVisible(true);
             } else if (label.equals("Show/Hide Derivations")) {
                 Stamp.showDerivationChain=!Stamp.showDerivationChain;
+            } else if (label.equals("Show/Hide Stamp")) {
+                Stamp.showStamp=!Stamp.showStamp;
             } else if (label.equals("Related Information")) {
 //                MessageDialog web = 
                 		new MessageDialog(this, NARS.WEBSITE);