 				for (var vertexId : uint = 0; vertexId < vertexCount; ++vertexId)
 					for (var componentId : uint = 0; componentId < componentCount; ++componentId)
 					{
-						var vertexData		: Vector.<Number>	= vertexComponentDatas[componentId];
-						var componentSize	: uint				= vertexComponentSizes[componentId];
-						var componentOffset	: uint				= vertexComponentOffsets[componentId] + vertexId * vertexComponentDwordsPerVertex[componentId];
+						var vertexData		: Vector.<Number>	= componentDatas[componentId];
+						var componentSize	: uint				= componentSizes[componentId];
+						var componentOffset	: uint				= componentOffsets[componentId] + vertexId * componentDwordsPerVertex[componentId];
 						var componentLimit	: uint				= componentSize + componentOffset;
 						
 						for (var n : uint = componentOffset; n < componentLimit; ++n)

				// get offsets, sizes, and buffers for components in the current mesh.
				for (var k : uint = 0; k < componentCount; ++k)
				{
					var vertexComponent	: VertexComponent	= vertexComponents[k];
					var vertexStream	: VertexStream		= mesh.vertexStream.getSubStreamByComponent(vertexComponent);
					
					vertexComponentOffsets[k]				= vertexStream.format.getOffsetForComponent(vertexComponent);
					vertexComponentDwordsPerVertex[k]		= vertexStream.format.dwordsPerVertex;
					vertexComponentSizes[k]					= vertexComponent.dwords;
					vertexComponentDatas[k]					= vertexStream._data;
				}
				
				// push vertex data into the new buffer.

			vertexFormat ||= _vertexStream.format.clone();
			
			var meshes				: Vector.<IMesh>			= Vector.<IMesh>([this])
			var mergedMesh			: IMesh						= createMesh(meshes, vertexFormat);
			return mergedMesh;
		}
		
