         return CAReplicatorLayer.self
     }
     
-    private var repliLayer: CAReplicatorLayer {
-        return self.layer as! CAReplicatorLayer
-    }
-    
-    private var maskLayer: CAGradientLayer? {
+    private weak var repliLayer: CAReplicatorLayer? {
+        return self.layer as? CAReplicatorLayer
+    }
+    
+    private weak var maskLayer: CAGradientLayer? {
         return self.layer.mask as! CAGradientLayer?
     }
     

            sublabel.frame = homeLabelFrame
            
            // Remove any replication
            self.repliLayer.instanceCount = 1
            
            // Enforce text alignment for this type
            sublabel.textAlignment = NSTextAlignment.Left

        // Create scroller, which defines the animation to perform
        let homeOrigin = homeLabelFrame.origin
        let awayOrigin = offsetCGPoint(homeLabelFrame.origin, offset: awayOffset)
        let scroller = Scroller(generator: { [unowned self] (interval: CGFloat, delay: CGFloat) -> [(layer: CALayer, anim: CAKeyframeAnimation)] in
            // Create animation for position
            let values: [NSValue] = [
                NSValue(CGPoint: homeOrigin), // Start at home
