 		 */
 		public function getValueFromKey(key:IQualifiedKey, dataType:Class = null):*
 		{
-			if (_internalColumn != null)
+			if (getInternalColumn())
 				return _internalColumn.getValueFromKey(key, dataType);
 			return undefined;
 		}

		{
			return dynamicColumnReference.internalObject as IColumnReference;
		}
		
		/**
		 * This gets called when either the columnReference object changes or the referenced column changes.
		 * This function will remove a callback from the old column and add a callback to the new one.
		 */
		protected function handleReferenceChange():void
		{
			var newColumn:IAttributeColumn = WeaveAPI.AttributeColumnCache.getColumn(internalColumnReference);
			// do nothing if this is the same column
			if (_internalColumn == newColumn)
				return;
			
			if (_internalColumn != null)
				(WeaveAPI.SessionManager as SessionManager).unregisterLinkableChild(this, _internalColumn);

			_internalColumn = newColumn;
			
			if (_internalColumn != null)
				registerLinkableChild(this, _internalColumn);
		}
		
		/**
		 * @return The column referenced by the columnReference object.
		 */
		public function getInternalColumn():IAttributeColumn
		{
			return _internalColumn;
		}
		/**
		 * the internal referenced column
		 */
		protected var _internalColumn:IAttributeColumn = null;
		

		


		public function getMetadata(attributeName:String):String
		{
			return getInternalColumn() ? _internalColumn.getMetadata(attributeName) : null;
		}

		/**
