 			
 			try
 			{
-				if (detectLinkableObjectChange(selfCallback, script))
+				if (detectLinkableObjectChange(_runScript, script))
 					_compiledScript = _compiler.compileToFunction(script.value, _symbolTableProxy, reportError, false);
 				
 				_compiledScript.apply(this);

				|| LinkableFunction.macros.getObject(name) != null;
		}
		
		private function selfCallback():void
		{
			if (!groupedCallback.value)
				runScript();
		}
		
		private function selfGroupedCallback():void
		{
			if (groupedCallback.value)
				runScript();
		}
		
		private function runScript():void
		{
			if (delayWhileBusy.value && WeaveAPI.SessionManager.linkableObjectIsBusy(this))
				return;

		public function LinkableCallbackScript()
		{
			var callbacks:ICallbackCollection = WeaveAPI.SessionManager.getCallbackCollection(this);
			callbacks.addImmediateCallback(null, _immediateCallback);
			callbacks.addGroupedCallback(null, _groupedCallback);
		}
		
		public const variables:LinkableHashMap = registerLinkableChild(this, new LinkableHashMap());
