 			mesh.bindings.removeCallback('visible', meshVisibilityChangedHandler);
 			mesh.bindings.removeCallback('insideFrustum', meshVisibilityChangedHandler);
 			mesh.bindings.removeCallback('effect', meshEffectChangedHandler);
-			mesh.materialChanged.remove(meshMaterialChangedHandler);
 			mesh.frameChanged.remove(meshFrameChangedHandler);
 			mesh.geometryChanged.remove(meshGeometryChangedHandler);
 			

			
			if (!_effectToMeshes[newEffect])
			{
				_effectToMeshes[newEffect] = new Vector.<Mesh>();
				newEffect.passesChanged.add(effectPassesChangedHandler);
			}
			

			delete _meshToDrawCalls[mesh];
			delete _meshBindingsToMesh[meshBindings];
			
			var meshesWithSameEffect : Vector.<Mesh> = _effectToMeshes[effect];

			meshesWithSameEffect.splice(meshesWithSameEffect.indexOf(mesh), 1);
			
			if (meshesWithSameEffect.length == 0)
			{
				delete _effectToMeshes[effect];
                effect.passesChanged.remove(effectPassesChangedHandler);
			}
		}
		
