 				// find new properties
 				for (var newName:String in newState)
 				{
-					if (oldState[newName] === undefined)
+					if (oldState[newName] === undefined && newState[newName] !== undefined)
 					{
 						if (!diff)
 							diff = {};

					while (i--)
					{
						var value:Object = diffToAdd[i];
						if (value === null || typeof value != 'object')
							baseDiff[i] = value; // avoid function call overhead
						else
							baseDiff[i] = combineDiff(baseDiff[i], value);

		
		public function combineDiff(baseDiff:Object, diffToAdd:Object):Object
		{
			// convert undefined params to null params
			if (baseDiff == null)
				baseDiff = null;
			if (diffToAdd == null)
				diffToAdd = null;
			
			var baseType:String = typeof(baseDiff); // the type of null is 'object'
			var diffType:String = typeof(diffToAdd);

