 					vstream.disposeLocalData();
 			}
 			
-			return vbuffer;
+			return _vertexBuffer;
 		}
 		
 		public function dispose() : void
 		{
-			for each (var vb : VertexBuffer3D in _vertexBuffers)
-				vb.dispose();
-			
-			_vertexBuffers = new Dictionary(true);
+			_vertexBuffer.dispose();
 		}
 	}
 }
		
		private var _stream			: IVertexStream		= null;
		private var _streamVersion	: uint				= 0;
		private var _vertexBuffers	: Dictionary		= new Dictionary(true);
		private var _numVertices	: uint				= 0;
		
		public function get numVertices() : uint	{ return _numVertices; }

			if (!(_stream is VertexStream))
				return vstream.ressource.getVertexBuffer3D(context, component);
			
			var update		: Boolean			= vstream.version != _streamVersion;
			var numVertices	: uint				= vstream.length;
			
			if (numVertices && (!_vertexBuffer || numVertices != _numVertices))
			{
				if (_vertexBuffer)
					_vertexBuffer.dispose();
				
				_vertexBuffer = context.createVertexBuffer(vstream.length,
														   vstream.format.dwordsPerVertex);
				update = true;
			}
			
			if (_vertexBuffer && update)
			{
				_vertexBuffer.uploadFromVector(vstream._data, 0, numVertices);
				
				_streamVersion = vstream.version;
				_numVertices = numVertices;
