 					neededVerticesCount = 0;
 					for (localVertexId = 0; localVertexId < 3; ++localVertexId)
 					{
-						inIndices.position = (usedIndicesCount + localVertexId) << 2;
-						oldVertexIds[localVertexId]	= inIndices.readUnsignedShort();
+						oldVertexIds[localVertexId]	= inIndices[uint(totalUsedIndices + usedIndicesCount + localVertexId)];
 						
 						var tmp : Object = usedVerticesDic[oldVertexIds[localVertexId]];
 						

		 * @param dwordsPerVertex 
		 */		
		public static function splitBuffers(inVertices		: ByteArray,
											inIndices		: ByteArray,
											outVertices		: Vector.<ByteArray>,
											outIndices		: Vector.<ByteArray>,
											bytesPerVertex	: uint = 12) : void
		{
			var inVerticesStartPosition	: uint	= inVertices.position;
			var numVertices				: uint	= inVertices.bytesAvailable / bytesPerVertex;
			var inIndicesStartPosition	: uint	= inIndices.position;
			var numIndices				: uint	= inIndices.bytesAvailable >>> 1;
			
			if (numIndices < INDEX_LIMIT && numVertices < VERTEX_LIMIT)
			{
				outVertices.push(inVertices);
				outIndices.push(inIndices);
				
				return;
			}
			
			while (inIndices.bytesAvailable)
			{
				var indexDataLength		: uint				= inIndices.bytesAvailable >> 1;
				
				// new buffers
				var partialVertexData	: ByteArray			= new ByteArray();

			{
				var index : uint = indexData.readUnsignedShort();
				
				indexData.position -= 2;
				indexData.writeShort(oldVertexIdToNewVertexId[index]);
			}
			indexData.position = indexDataStartPosition;
