diff --git a/src/main/java/org/opennars/lab/microworld/Pong.java b/src/main/java/org/opennars/lab/microworld/Pong.java
index c068dd8aa954c4ea4df5d1a937c3c12fbde041dd..95dee1adcb028e9a36a952060893e9a669248aac 100755
--- a/src/main/java/org/opennars/lab/microworld/Pong.java
+++ b/src/main/java/org/opennars/lab/microworld/Pong.java
@@ -30,11 +30,14 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import org.opennars.entity.Concept;
 
 import org.opennars.entity.Sentence;
 import org.opennars.entity.Task;
 import org.opennars.gui.NARSwing;
 import org.opennars.interfaces.Timable;
+import org.opennars.io.Narsese;
+import org.opennars.io.Parser;
 import org.opennars.util.test.ConceptMonitor;
 import org.opennars.language.Term;
 import org.opennars.operator.Operation;
@@ -249,16 +252,27 @@ public class Pong extends Frame {
                     if(obj.x == width) {
                         lastAction = 2;
                     }
+                    Concept left = null;
+                    Concept right = null;
+                    try {
+                        left = nar.memory.concept(new Narsese(nar).parseTerm("Left({SELF})")); //refine API in the future
+                        right = nar.memory.concept(new Narsese(nar).parseTerm("Right({SELF})")); //innate motivation plugin
+                    } catch (Parser.InvalidInputException ex) {              //with for instance battery level etc. and their state?
+                        Logger.getLogger(Pong.class.getName()).log(Level.SEVERE, null, ex);
+                    }
                     if(lastAction == 1) {
-                        //System.out.println("random left");
-                        //nar.addInput("Left({SELF}). :|:");
-                        
+                        if(right != null && !right.allowBabbling) {
+                            lastAction = 0;
+                            return 0;
+                        }
                         nar.addInput("Right({SELF}). :|:");
                     }
                     if(lastAction == 2) {
+                        if(left != null && !left.allowBabbling) {
+                            lastAction = 0;
+                            return 0;
+                        }
                         nar.addInput("Left({SELF}). :|:");
-                        //System.out.println("random right");
-                        //nar.addInput("Right({SELF}). :|:");
                     }
                 }
 
diff --git a/src/main/java/org/opennars/lab/microworld/SimNAR.java b/src/main/java/org/opennars/lab/microworld/SimNAR.java
index 75e194cd8d845c95bf3bf4131f66376985ba1196..813b4a74368b610343ecbd42845b899582823c01 100755
--- a/src/main/java/org/opennars/lab/microworld/SimNAR.java
+++ b/src/main/java/org/opennars/lab/microworld/SimNAR.java
@@ -29,9 +29,12 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import org.opennars.entity.Concept;
 import org.opennars.entity.Task;
 import org.opennars.gui.NARSwing;
 import org.opennars.interfaces.Timable;
+import org.opennars.io.Narsese;
+import org.opennars.io.Parser;
 import org.opennars.language.Term;
 import org.opennars.operator.Operation;
 import org.opennars.operator.Operator;
@@ -343,15 +346,27 @@ public class SimNAR extends Frame {
 
                 if(lastAction==0 && random(1.0f)<Alpha) { //if Nar hasn't decided chose a random action
                     lastAction = (int)random((float)nActions);
+                    Concept left = null;
+                    Concept right = null;
+                    try {
+                        left = nar.memory.concept(new Narsese(nar).parseTerm("Left({SELF})")); //refine API in the future
+                        right = nar.memory.concept(new Narsese(nar).parseTerm("Right({SELF})")); //innate motivation plugin
+                    } catch (Parser.InvalidInputException ex) {              //with for instance battery level etc. and their state?
+                        Logger.getLogger(Pong.class.getName()).log(Level.SEVERE, null, ex);
+                    }
                     if(lastAction == 1) {
-                        //System.out.println("random left");
+                        if(right != null && !right.allowBabbling) {
+                            lastAction = 0;
+                            return 0;
+                        }
                         nar.addInput("Right({SELF}). :|:");
-                       // nar.addInput("Left({SELF}). :|:");
                     }
                     if(lastAction == 2) {
-                        //System.out.println("random right");
+                        if(left != null && !left.allowBabbling) {
+                            lastAction = 0;
+                            return 0;
+                        }
                         nar.addInput("Left({SELF}). :|:");
-                       /// nar.addInput("Right({SELF}). :|:");
                     }
                 }