 				
 		private function effectChangedHandler(effect : Effect, property : String = null) : void
 		{
+			updateDrawCalls();
+			_bindings.clear();
+		}
+		
+		private function updateDrawCalls() : void
+		{
+			if (!_indexStream)
+				return ;
+			
 			var passes		: Vector.<ActionScriptShader>	= _effect.passes;
 			var numPasses 	: int 							= passes.length;
 			

					computeTangentSpace(StreamUsage.STATIC);
				}
				else if (components.indexOf(VertexComponent.NORMAL) >= 0
						 && _vertexStreams[0].getStreamByComponent(VertexComponent.NORMAL) == null)
				{
					computeNormals(StreamUsage.STATIC);
				}

			effectChangedHandler(_effect);
		}
		
		public function get vertexStreams() : Vector.<IVertexStream>
		{
			return _vertexStreams;
		}
		
		public function get indexStream() : IndexStream
		{
			return _indexStream;
		}
		public function set indexStream(value : IndexStream) : void
		{
			_indexStream = value;
			updateDrawCalls();
		}
		
		public function Mesh(effect			: Effect,
							 vertexStreams	: Vector.<IVertexStream>	= null,
							 indexStream	: IndexStream				= null)
		{
			super();

			_vertexStreams = vertexStreams || new Vector.<IVertexStream>();
			_indexStream = indexStream;
			
			initialize();
