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

		/**
		 * This function gets called when dataType changes and sets _defaultDataType.
		 */
		private function handleDataTypeChange():void
		{
			var _dataType:String = getMetadata(ColumnMetadata.DATA_TYPE);
			if (ObjectUtil.stringCompare(_dataType, DataTypes.GEOMETRY, true) == 0) // treat values as geometries

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