 
 // MARK: - UIView extension
 
-extension UIView
+public extension UIView
 {
     public override class func initialize() {
         struct Static {

            #else
            
            var placeholder:XXPlaceHolder? = self.getPlaceHolder()

            if ( placeholder == nil) {
                let ph = XXPlaceHolder.init(frame: self.bounds)
                self.addSubview(ph)


// MARK: - XXPlaceHolder

public class XXPlaceHolder: UIView {
    
    public static var config: XXPlaceHolderConfig = XXPlaceHolderConfig()
    
    public var backColor: UIColor  = XXPlaceHolder.config.backColor {didSet{self.setNeedsDisplay()}}
    public var arrowSize: CGFloat  = XXPlaceHolder.config.arrowSize {didSet{self.setNeedsDisplay()}}
    public var lineColor: UIColor  = XXPlaceHolder.config.lineColor {didSet{self.setNeedsDisplay()}}
    public var lineWidth: CGFloat  = XXPlaceHolder.config.lineWidth {didSet{self.setNeedsDisplay()}}
    public var frameColor: UIColor = XXPlaceHolder.config.frameColor {didSet{self.setNeedsDisplay()}}
    public var frameWidth: CGFloat = XXPlaceHolder.config.frameWidth {didSet{self.setNeedsDisplay()}}
    
    public var showArrow: Bool = XXPlaceHolder.config.showArrow {didSet{self.setNeedsDisplay()}}
    public var showText: Bool  = XXPlaceHolder.config.showText {didSet{self.setNeedsDisplay()}}
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        self.setup()
    }
    
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        
        self.setup()
    }
    
    private func setup() {
        self.opaque = false
        self.contentMode = .Redraw
        self.backgroundColor = UIColor.clearColor()
        self.userInteractionEnabled = false
        self.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
    }
    
    override public func drawRect(rect: CGRect) {
        
        let width = rect.size.width
        let height = rect.size.height
