 
 private let kInnerRadiusScaleFactor = CGFloat(0.05)
 
-@IBDesignable public class SVGPlayButton: UIButton {
-    
-    @IBInspectable public var playing: Bool = false {
+@IBDesignable open class SVGPlayButton: UIButton {
+    
+    @IBInspectable open var playing: Bool = false {
         didSet {
             if playing {
                 presentForPlaying()

            return pauseLinePath
        }
        
        pauseShapeLayerLeft.path = pauseLine(.Left).CGPath
        pauseShapeLayerLeft.fillColor = pauseColor.CGColor
        pauseShapeLayerLeft.hidden = self.playing ? false : true
        self.layer.addSublayer(pauseShapeLayerLeft)
        
        pauseShapeLayerRight.path = pauseLine(.Right).CGPath
        pauseShapeLayerRight.fillColor = pauseColor.CGColor
        pauseShapeLayerRight.hidden = self.playing ? false : true
        self.layer.addSublayer(pauseShapeLayerRight)
        
        //
        // Play
        //
        
        let midY = CGRectGetMidY(rect)
        let playLeftX = CGRectGetWidth(rect) * 0.4107
        
        let playPath = UIBezierPath()
        playPath.lineJoinStyle = CGLineJoin.Round
        playPath.moveToPoint(CGPointMake(playLeftX, midY))
        playPath.addLineToPoint(CGPointMake(playLeftX, (midY - CGRectGetHeight(rect) * 0.17)))
        playPath.addLineToPoint(CGPointMake(playLeftX + (CGRectGetWidth(rect) * 0.2322), midY))
        playPath.addLineToPoint(CGPointMake(playLeftX, (midY + CGRectGetHeight(rect) * 0.17)))
        playPath.addLineToPoint(CGPointMake(playLeftX, midY))
        
        playShapeLayer.path = playPath.CGPath
        playShapeLayer.strokeColor = playColor.CGColor
        playShapeLayer.fillColor = playColor.CGColor
        playShapeLayer.hidden = self.playing ? true : false
        self.layer.addSublayer(playShapeLayer)
        
        // helper
        func d2R(degrees: CGFloat) -> CGFloat {
            return degrees * 0.0174532925 // 1 degree ~ 0.0174532925 radians
        }
        
        let arcWidth = (CGRectGetWidth(rect) * kInnerRadiusScaleFactor)
        let radius = (CGRectGetMidY(rect) - arcWidth/2)
        
        //
        //  Progress 'track'

        sharedInit()
    }
    
    fileprivate func sharedInit() {
        self.addTarget(self, action: #selector(SVGPlayButton.touchUpInsideHandler), for: UIControlEvents.touchUpInside)
    }
    
    override open func draw(_ rect: CGRect) {
        
        //
        // Pause
        //
        
        let center: CGPoint = CGPoint(x: rect.midX, y: rect.midY)
        let pauseLineHeight = rect.height * 0.357
        let pauseLineWidth  = rect.width * 0.0714
        
        enum PauseLinePosition {
            case left
            case right
        }
        
        func pauseLine(_ position: PauseLinePosition) -> UIBezierPath {
            
            let pauseLineRectY = (bounds.height/2) - (pauseLineHeight * 0.5)
            var pauseLineRect = CGRect(x: 0, y: pauseLineRectY, width: pauseLineWidth, height: pauseLineHeight)
            
            if position == .left {
                let pauseLineRectX = (bounds.width / 2) - (pauseLineWidth * 0.5) - (pauseLineWidth * 1.25)
                pauseLineRect.origin.x = pauseLineRectX
            }
            
            if position == .right {
                let pauseLineRectX = (bounds.width / 2) - (pauseLineWidth * 0.5) + (pauseLineWidth * 1.25)
                pauseLineRect.origin.x = pauseLineRectX
            }
