 
 		public function getMetadata(attributeName:String):String
 		{
-			return getInternalColumn() ? _internalColumn.getMetadata(attributeName) : null;
+			if (_prevTriggerCounter != triggerCounter)
+				getInternalColumn();
+			return _internalColumn ? _internalColumn.getMetadata(attributeName) : null;
 		}
 
 		public function getMetadataPropertyNames():Array
 		{
-			return getInternalColumn() ? _internalColumn.getMetadataPropertyNames() : [];
+			if (_prevTriggerCounter != triggerCounter)
+				getInternalColumn();
+			return _internalColumn ? _internalColumn.getMetadataPropertyNames() : [];
 		}
 		
 		/**

		 */		
		public function getInternalColumn():IAttributeColumn
		{
			if (_dynamicRefTriggerCounter != dynamicColumnReference.triggerCounter)
			{
				_dynamicRefTriggerCounter = dynamicColumnReference.triggerCounter;
				
				var newColumn:IAttributeColumn = WeaveAPI.AttributeColumnCache.getColumn(internalColumnReference);
				// do nothing if this is the same column
				if (_internalColumn != newColumn)
				{
					if (_internalColumn != null)
						(WeaveAPI.SessionManager as SessionManager).unregisterLinkableChild(this, _internalColumn);

					_internalColumn = newColumn;
			
					if (_internalColumn != null)
						registerLinkableChild(this, _internalColumn);
				}
			}
			return _internalColumn;
		}
		

		
		
		
		
		
		
		
		/************************************

		 */
		public function get keys():Array
		{
			if (_prevTriggerCounter != triggerCounter)
				getInternalColumn();
			return _internalColumn ? _internalColumn.keys : [];
		}

		/**
