diff --git a/src/main/java/org/opennars/web/multinar/NarNode.java b/src/main/java/org/opennars/web/multinar/NarNode.java
index a8ac05d42d6060f8bbe7eeeb6af965a2b08e6630..8439cd0a2e67362af2fc2ede91abefa33d223352 100644
--- a/src/main/java/org/opennars/web/multinar/NarNode.java
+++ b/src/main/java/org/opennars/web/multinar/NarNode.java
@@ -44,6 +44,7 @@ public class NarNode extends Nar implements EventObserver  {
     
     /* An extra event for received tasks*/
     public class EventReceivedTask {}
+    public class EventReceivedNarsese {}
     
     /* The socket the Nar listens from */
     private DatagramSocket receiveSocket;
@@ -71,10 +72,16 @@ public class NarNode extends Nar implements EventObserver  {
             public void run() {
                 for(;;) {
                     try {
-                        Task ret = THIS.receiveTask();
+                        Object ret = THIS.receiveObject();
                         if(ret != null) {
-                            THIS.memory.event.emit(EventReceivedTask.class, new Object[]{ret});
-                            THIS.addInput(ret, THIS);
+                            if(ret instanceof Task) {
+                                THIS.memory.event.emit(EventReceivedTask.class, new Object[]{ret});
+                                THIS.addInput((Task) ret, THIS);
+                            } else
+                            if(ret instanceof String) {
+                                THIS.memory.event.emit(EventReceivedNarsese.class, new Object[]{ret});
+                                THIS.addInput(ret);
+                            }
                         }
                     } catch (IOException ex) {
                         Logger.getLogger(NarNode.class.getName()).log(Level.SEVERE, null, ex);
@@ -131,6 +138,27 @@ public class NarNode extends Nar implements EventObserver  {
             }
         }
     }
+    
+    /**
+     * Send Narsese that contains the optional mustContainTerm
+     * 
+     * @param t
+     * @throws IOException 
+     */
+    private void sendNarsese(String input, TargetNar target) throws IOException {
+        ByteArrayOutputStream bStream = new ByteArrayOutputStream();
+        ObjectOutput oo = new ObjectOutputStream(bStream); 
+        oo.writeObject(input);
+        oo.close();
+        byte[] serializedMessage = bStream.toByteArray();
+        boolean searchTerm = target.mustContainTerm != null;
+        boolean containsFound = searchTerm && input.contains(target.mustContainTerm.toString());
+        if(!searchTerm || containsFound) {
+            DatagramPacket packet = new DatagramPacket(serializedMessage, serializedMessage.length, target.targetAddress, target.targetPort);
+            target.sendSocket.send(packet);
+            //System.out.println("narsese sent:" + input);
+        }
+    }
 
     public class TargetNar {
         
@@ -180,15 +208,14 @@ public class NarNode extends Nar implements EventObserver  {
      * @throws IOException
      * @throws ClassNotFoundException 
      */
-    private Task receiveTask() throws IOException, ClassNotFoundException {
+    private Object receiveObject() throws IOException, ClassNotFoundException {
         byte[] recBytes = new byte[100000];
         DatagramPacket packet = new DatagramPacket(recBytes, recBytes.length);
         receiveSocket.receive(packet);
         ObjectInputStream iStream = new ObjectInputStream(new ByteArrayInputStream(recBytes));
-        Task T = (Task) iStream.readObject();
-        //System.out.println("task received: " + T);
+        Object msg = iStream.readObject();
         iStream.close();
-        return T;
+        return msg;
     }