         _labelLayer = new UIComponent();
         _labelLayer.styleName = this;
         
-        labelCache = new InstanceCache(Label,_labelLayer);
+        labelCache = new InstanceCache(getLabelClass(),_labelLayer);
         labelCache.discard = true;
         labelCache.properties =
         {
-            selectable: false,
             styleName: this
         };
         
         dataTransform = new CartesianTransform();
     }
+	
+	private function getLabelClass():Class
+	{
+		var labelClass:Class = getStyle("labelClass");
+		if(labelClass == null)
+		{
+			try{
+				labelClass = Class(ApplicationDomain.currentDomain.
+					getDefinition("spark.components::Label"));
+			}
+			catch(e:Error)
+			{
+				labelClass = Class(ApplicationDomain.currentDomain.
+					getDefinition("mx.controls::Label"));
+			}
+		}
+		return labelClass;
+	}
+
     
     //--------------------------------------------------------------------------
     //

            var v:BarSeriesItem =activeCount[i];
            label=labels[i];
            label.x=v.labelX;
            label.y=v.labelY;
            label.width=v.labelWidth;
            label.height=v.labelHeight;
            label.text=v.labelText;

        var n:int=activeCount.length;
        labelCache.count = n;             
        var labels:Array /* of Label */ = labelCache.instances;
        var label:Object;
        
        var rotation:Number = getStyle('labelRotation');        
        var size:Number = getStyle('fontSize');
