 		private static const FLEX:String = 'flex';
 		private static const DIRECTION:String = 'direction';
 		private static const CHILDREN:String = 'children';
+		private static var LinkableDynamicDisplayObject_QName:String;
+		private static var FlexibleLayout_QName:String;
 		
 		public function FlexibleLayout()
 		{
+			if (!LinkableDynamicDisplayObject_QName)
+				LinkableDynamicDisplayObject_QName = getQualifiedClassName(LinkableDynamicDisplayObject);
+			if (!FlexibleLayout_QName)
+				FlexibleLayout_QName = getQualifiedClassName(FlexibleLayout);
+			
 			setStyle('horizontalGap', 8);
 			setStyle('verticalGap', 8);
 			minWidth = 16;

			var id:Array = state[ID] is String ? [state[ID] as String] : state[ID] as Array;
			var flex:Number = state[FLEX];
			var direction:String = state[DIRECTION] as String;
			var children:Array = id ? [id] : (state[CHILDREN] as Array || []);
			
			_childNamesForMapChildInput = _children.getNames();
			children = children.map(_mapChildInput);
			
			getCallbackCollection(this).delayCallbacks();
			

		private const _flex:LinkableNumber = registerLinkableChild(this, new LinkableNumber(1));
		private const _direction:LinkableString = registerLinkableChild(this, new LinkableString(BoxDirection.VERTICAL, verifyDirection), adjustChildFlexValues, true);
		private const _children:LinkableHashMap = registerLinkableChild(this, new LinkableHashMap(), adjustChildFlexValues, true);
		private const _originalParents:Dictionary = new Dictionary(true);
		
		override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
