 						var ssm:SessionStateMessage = o as SessionStateMessage;
 						if (userAlias == this.username)
 						{
+							//dispatchLogEvent('\nECHO ' + ssm.id + '\n--------------------------\n');
+							
 							// received echo back from local state change
 							// search history for diff with matching id
 							var foundID:Boolean = false;

							for (i = stateLog.undoHistory.length - 1; i >= 0; i--)
								setSessionState(root, stateLog.undoHistory[i].backward, false);
							
							// apply remote change
							setSessionState(root, ssm.diff, false);
							
							// replay local changes
							for (i = 0; i < stateLog.undoHistory.length; i++)
								setSessionState(root, stateLog.undoHistory[i].forward, false);
						}
					}
				}

		private const baseDecoder:Base64Decoder = new Base64Decoder();
		private var connectedToRoom:Boolean = false;
		private var stateLog:SessionStateLog = null;
		private var synchronizingIncomingDiff:Boolean = false;
		
		public const userList:ArrayCollection = new ArrayCollection();
		public var username:String;
