diff --git a/ipaacalib/java/ivy.xml b/ipaacalib/java/ivy.xml
index 918ed493865b6f8e4777594cdea6745b56671306..8023c27a1dc4f2f71d0d7cfcebe49d55bd8a2475 100644
--- a/ipaacalib/java/ivy.xml
+++ b/ipaacalib/java/ivy.xml
@@ -6,8 +6,8 @@
    <dependencies>
       <dependency org="slf4j"   name="slf4j-api"              rev="latest.release"  />
       <dependency org="google"  name="guava"                  rev="latest.release"  />
-      <dependency org="google"  name="protobuf-java"                  rev="latest.release"  />
-      <dependency org="rsb"  name="rsb"                  rev="latest.release"  />
-      <dependency org="lombok"  name="lombok"                  rev="latest.release"  />
+      <dependency org="google"  name="protobuf-java"          rev="latest.release"  />
+      <dependency org="rsb"     name="rsb"                    rev="latest.release"  />
+      <dependency org="lombok"  name="lombok"                 rev="latest.release"  />
    </dependencies>
 </ivy-module>
diff --git a/ipaacalib/java/src/ipaaca/IUEventType.java b/ipaacalib/java/src/ipaaca/IUEventType.java
index fd6f481f4d9c1cdb28d220feedcb0ea15a8a4313..3cbdd639b60a3cc74a76bf8030853fd5365f8966 100644
--- a/ipaacalib/java/src/ipaaca/IUEventType.java
+++ b/ipaacalib/java/src/ipaaca/IUEventType.java
@@ -34,5 +34,5 @@ package ipaaca;
 
 public enum IUEventType
 {
-    ADDED, COMMITTED, DELETED, RETRACTED, UPDATED, LINKSUPDATED;
+    ADDED, COMMITTED, DELETED, RETRACTED, UPDATED, LINKSUPDATED, MESSAGE;
 }
diff --git a/ipaacalib/java/src/ipaaca/InputBuffer.java b/ipaacalib/java/src/ipaaca/InputBuffer.java
index b36ef565070a0eff18029fd7d22db84ee9394cf2..e5542c3d7e3ff8d8c13a5588c192ada84a435020 100644
--- a/ipaacalib/java/src/ipaaca/InputBuffer.java
+++ b/ipaacalib/java/src/ipaaca/InputBuffer.java
@@ -270,7 +270,9 @@ public class InputBuffer extends Buffer
         {
             RemoteMessageIU rm = (RemoteMessageIU) event.getData();
             messageStore.put(rm.getUid(), rm);
-            callIuEventHandlers(rm.getUid(), false, IUEventType.ADDED, rm.getCategory());
+            // FIXME: this is NOT according to the other language versions!
+            // Messages must emit IUEventType.MESSAGE - not ADDED
+            callIuEventHandlers(rm.getUid(),false, IUEventType.ADDED, rm.getCategory());
             messageStore.remove(rm.getUid());
         }
         else if (event.getData() instanceof RemotePushIU)
diff --git a/ipaacatools/scripts/ipaaca-iu-injector.py b/ipaacatools/scripts/ipaaca-iu-injector.py
index 22499958789a7ec3ec29bee4624c6e5db088d3f3..b6a56de5658860b3a469d6a6f328d9c34d7ab41f 100755
--- a/ipaacatools/scripts/ipaaca-iu-injector.py
+++ b/ipaacatools/scripts/ipaaca-iu-injector.py
@@ -41,26 +41,50 @@ def my_update_handler(iu, event_type, local):
 
 if len(sys.argv)<2:
 	print "Please use the program as follows:"
-	print " "+sys.argv[0]+" <categoryname> [<payloadkey> <payloadvalue>] [<k2> <v2>] ..."
+	print " "+sys.argv[0]+" [--class IU|Message] [--timeout <sec>] <categoryname> [<payloadkey> <payloadvalue>] [<k2> <v2>] ..."
 	sys.exit(1)
 
-cate = sys.argv[1]
-idx=2
+iu_class = 'Message'
+timeout = 3.0
+idx = 1
+keep_going = True
+while keep_going:
+	keep_going = False
+	if sys.argv[idx]=='--class':
+		t = sys.argv[idx+1]
+		if t in ['Message', 'IU']:
+			iu_class = t
+		else:
+			print "Unknown IU class: "+t
+			sys.exit(1)
+		idx += 2
+		keep_going = True
+	elif sys.argv[idx]=='--timeout':
+		timeout = float(sys.argv[idx+1])
+		idx += 2
+		keep_going = True
+
+cate = sys.argv[idx]
+idx += 1
 pl={}
 while len(sys.argv)>idx+1:
 	pl[sys.argv[idx]] = sys.argv[idx+1]
 	idx+=2
 
-print "Sending Message of category "+cate
+print "Sending "+iu_class+" of category "+cate
 print " with payload "+str(pl)
 
 ob = ipaaca.OutputBuffer('IUInjector')
 ob.register_handler(my_update_handler)
-iu_top = ipaaca.Message(cate)
+iu_top = ipaaca.IU(cate)
 iu_top.payload = pl
 ob.add(iu_top)
-print "Message sent."
+print iu_class+" sent."
 
-time.sleep(0.3)
+if iu_class=="IU":
+	print "Waiting "+str(timeout)+" sec for remote modifications..."
+	time.sleep(timeout)
+else:
+	time.sleep(0.1)
 print "done."