Messages now have an ID.
diff --git a/src/main/java/org/apache/ode/jacob/Message.java b/src/main/java/org/apache/ode/jacob/Message.java
index ccf2611..5d62135 100644
--- a/src/main/java/org/apache/ode/jacob/Message.java
+++ b/src/main/java/org/apache/ode/jacob/Message.java
@@ -21,6 +21,7 @@
 import java.io.Serializable;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
 
 
 /**
@@ -31,6 +32,8 @@
 public class Message implements Serializable {
     private static final long serialVersionUID = -2118625760125445959L;
     
+    private static final AtomicLong idGen = new AtomicLong();
+    
     private long id;
     private ChannelRef to;	
     private ChannelRef replyTo;
@@ -39,7 +42,7 @@
 	private Object body;
 
 	public Message() {
-		id = 0;	// TODO: generate id
+		id = idGen.incrementAndGet();
 		// TODO: always allocating headers may not be a good idea
 		//  checking for non-null headers in the getters below is 
 		//  not great either; should look into a better option later
@@ -111,8 +114,7 @@
     public static Message copyFrom(Message message) {
 	    Message result = new Message();
 	    
-	    //XXX: generate id
-	    result.setId(0);
+	    result.setId(idGen.incrementAndGet());
 	    
 	    result.setAction(message.getAction());
 	    result.setBody(message.getBody());