 					switch (nativeFormats[i])
 					{
 						case VertexComponentType.FLOAT_4 :
-							tmp[int(length++)] = data.readFloat();
+							tmp[int(length++)] = reader();
 						case VertexComponentType.FLOAT_3 :
-							tmp[int(length++)] = data.readFloat();
+							tmp[int(length++)] = reader();
 						case VertexComponentType.FLOAT_2 :
-							tmp[int(length++)] = data.readFloat();
+							tmp[int(length++)] = reader();
 						case VertexComponentType.FLOAT_1 :
-							tmp[int(length++)] = data.readFloat();
+							tmp[int(length++)] = reader();
 							break ;
 					}
 				}
 			}
 			
+			stream._data = tmp;
+			stream.invalidate();
+
 			return stream;
 		}
 		

			for (var k : int = 0; k < numFormats; k++)
				nativeFormats[k] = format.components[k].nativeFormat;
			
			stream._data = tmp;
			
			tmp = new Vector.<Number>(format.dwordsPerVertex * count, true);
			

									dynamic);
		}
		

		public static function fromByteArray(data 		: ByteArray,
											 count		: int,
											 format		: VertexFormat,
											 dynamic	: Boolean	= false,
											 reader 	: Function 	= null) : VertexStream
		{
			var numFormats		: int				= format.components.length;
			var nativeFormats	: Vector.<int>		= new Vector.<int>(numFormats, true);
