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

				|| 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;

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