 								if (obj[DynamicState.OBJECT_NAME] == property)
 								{
 									state = obj[DynamicState.SESSION_STATE];
-									break;
+									continue outerLoop;
 								}
 							}
+							return undefined;
 						}
 					}
 					else

			};
			watchLookup[linkableTarget] = callback;
			getCallbackCollection(linkableTarget).addImmediateCallback(null, callback);
		}
		
		public static function unwatch(target:Object):void

		{
			try
			{
				outerLoop: for each (var property:* in path)
				{
					if (DynamicState.isDynamicStateArray(state))
					{
						if (property is Number)
						{
							state = state[property][DynamicState.SESSION_STATE];
						}
						else
						{
							for each (var obj:Object in state)
