 				|| LinkableFunction.macros.getObject(name) != null;
 		}
 		
+		private function handleChange():void
+		{
+			_cacheTriggerCount = triggerCounter;
+			try
+			{
+				// check if the equation evaluates to a constant
+				var compiledObject:ICompiledObject = compiler.compileToObject(equation.value);
+				if (compiledObject is CompiledConstant)
+				{
+					// save the constant result of the function
+					_equationIsConstant = true;
+					_equationResultCache.dictionary = null; // we don't need a cache
+					_constantResult = (compiledObject as CompiledConstant).value;
+				}
+				else
+				{
+					// compile into a function
+					compiledEquation = compiler.compileObjectToFunction(compiledObject, _symbolTableProxy, errorHandler, false, ['key', 'dataType']);
+					_equationIsConstant = false;
+					_equationResultCache.dictionary = new Dictionary(); // create a new cache
+					_constantResult = undefined;
+				}
+			}
+			catch (e:Error)
+			{
+				// if compiling fails
+				_equationIsConstant = true;
+				_constantResult = undefined;
+			}
+			cacheDefaultDataType();
+			
+			try
+			{
+				_numberToStringFunction = StandardLib.formatNumber;
+				var n2s:String = getMetadata(ColumnMetadata.STRING);
+				if (n2s)
+					_numberToStringFunction = compiler.compileToFunction(n2s, _symbolTableProxy, errorHandler, false, ['number']);
+			}
+			catch (e:*)
+			{
+				errorHandler(e);
+			}
+		}
+		
 		/**
 		 * @return The result of the compiled equation evaluated at the given record key.
 		 * @see weave.api.data.IAttributeColumn

	 * 
	 * @author adufilie
	 */
	public class EquationColumn extends AbstractAttributeColumn
	{
		public static var debug:Boolean = false;
		

					{
						value = compiledEquation.apply(this, arguments);
						if (debug)
							trace(debugId(this),getMetadata(ColumnMetadata.TITLE),key.keyType,key.localName,dataType,value);
					}
					catch (e:Error)
					{
						if (_lastError != e.message)
						{
							_lastError = e.message;
							reportError(e);
						}
						//value = e;
					}
					
					// save value in cache
					if (value !== undefined)
						_equationResultCache.set(key, dataType, value);
					//trace('('+equation.value+')@"'+key+'" = '+value);
				}
				else if (value === UNDEFINED)
				{
					value = undefined;
				}
				else if (debug)
					trace('>',debugId(this),getMetadata(ColumnMetadata.TITLE),key.keyType,key.localName,dataType,value);
			}
			
			if (dataType == IQualifiedKey)
			{
