     required public init?(coder aDecoder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
-
+    
+    public func updateLineColors(bgColor: UIColor, fgColor: UIColor, lineJoin: String = kCALineJoinMiter) {
+        bgLayer = GridLogo.shapeLayerWithLogoPath(bgColor, lineJoin: lineJoin, lineWidth: lineWidth, turns: turns, md: md)
+        fgLayer = GridLogo.shapeLayerWithLogoPath(fgColor, lineJoin: lineJoin, lineWidth: lineWidth, turns: turns, md: md)
+    }
     
     
-    public func show(completionHandler: (() -> Void)? = nil) {
-        self.startAnimation()
-        
-        self.fgLayer.opacity = 1
-        self.bgLayer.opacity = 1
-        
-        self.fgLayer.addAnimation(self.fadeInAnimation, forKey: "fade")
-        self.bgLayer.addAnimation(self.fadeInAnimation, forKey: "fade")
-        
-        dispatch_after(self.fadeDuration, dispatch_get_main_queue()) {
-            completionHandler?()
-        }
+    public func show() {
+        startAnimation()
+        fgLayer.opacity = 1
+        bgLayer.opacity = 1
+        fgLayer.addAnimation(fadeInAnimation, forKey: "fade")
+        bgLayer.addAnimation(fadeInAnimation, forKey: "fade")
     }
     
-    public func hide(completionHandler: (() -> Void)? = nil) {
-        self.fgLayer.opacity = 0
-        self.bgLayer.opacity = 0
-        
-        self.fgLayer.addAnimation(self.fadeOutAnimation, forKey: "fade")
-        self.bgLayer.addAnimation(self.fadeOutAnimation, forKey: "fade")
-        
-        dispatch_after(self.fadeDuration, dispatch_get_main_queue()) {
-            self.fgLayer.removeAllAnimations()
-            completionHandler?()
-        }
+    public func hide() {
+        fgLayer.opacity = 0
+        bgLayer.opacity = 0
+        fgLayer.addAnimation(fadeOutAnimation, forKey: "fade")
+        bgLayer.addAnimation(fadeOutAnimation, forKey: "fade")
     }
     
     func startAnimation() {
-        self.fgLayer.removeAllAnimations()
-        self.fgLayer.addAnimation(pathAnimationGroup, forKey: "group")
+        fgLayer.removeAllAnimations()
+        fgLayer.addAnimation(pathAnimationGroup, forKey: "group")
     }
     
     func endAnimation() {
-        self.fgLayer.removeAllAnimations()
+        fgLayer.removeAllAnimations()
     }
 }
    private var mystic: CGFloat = 4
    private var turns: Int
    private var md: CGFloat
    private let bgLayer: CAShapeLayer
    private let fgLayer: CAShapeLayer
    private let pathAnimationGroup: CAAnimationGroup
    private var duration: CFTimeInterval
    private var reverses = false

        return animation
    }()
    
    public init(
        mystic m: CGFloat,
        duration d: CFTimeInterval,
        lineWidth lw: CGFloat = 1,
        bgColor: UIColor = UIColor(red: 51/255, green: 51/255, blue: 48/255, alpha: 1),
        fgColor: UIColor = UIColor(red: 1, green: 246/255, blue: 153/255, alpha: 1),
        lineJoin: String = kCALineJoinMiter,
        turns t: Int = 9,
        repeatCount: Float = 14
        )
    {
        mystic = m
        duration = d
        lineWidth = lw
        md = m
        turns = t
        bgLayer = GridLogo.shapeLayerWithLogoPath(bgColor, lineJoin: lineJoin, lineWidth: lineWidth, turns: turns, md: md)
        fgLayer = GridLogo.shapeLayerWithLogoPath(fgColor, lineJoin: lineJoin, lineWidth: lineWidth, turns: turns, md: md)
        pathAnimationGroup = GridLogo.setupAnimation(duration, repeatCount: repeatCount)
        
        super.init(frame: CGRectZero)
        
        layer.addSublayer(bgLayer)
        layer.addSublayer(fgLayer)
        userInteractionEnabled = false
