         }
         
         // Check for empty string
-        if sublabel.text.isEmpty {
+        if sublabel.text!.isEmpty {
             return false
         }
         

            self.layer.mask.addAnimation(gradientAnimation, forKey: "gradient")
        }
        
        
        CATransaction.setCompletionBlock { () -> Void in
            // Call returned home function
            self.labelReturnedToHome(true)
            // Check to ensure that:

                    callback(self)(interval: interval, delay: delay)
                }
            }
        })
        
        // Call scroller
        let scrolls = scroller(interval: interval, delay: delay)
        
        // Perform all animations in scrolls
        for (index, scroll) in enumerate(scrolls) {
            let layer = scroll.layer
            let anim = scroll.anim
            
            // Add callback to single animation
            if index == 0 {
                anim.setValue(completion as AnyObject, forKey: MarqueeKeys.CompletionClosure.rawValue)
                anim.delegate = self;
            }
            
            // Add animation
            layer.addAnimation(anim, forKey: "position")
        }
        
        CATransaction.commit()
    }
    
    private func scrollAway(interval: CGFloat, delay: CGFloat = 0.0) {
        // Create scroller, which defines the animation to perform
        let scroller = { (interval: CGFloat, delay: CGFloat) -> [(layer: CALayer, anim: CAKeyframeAnimation)] in
            // Create animation for position
            let values: [NSValue] = [
                NSValue(CGPoint: self.homeLabelFrame.origin), // Start at home
                NSValue(CGPoint: self.homeLabelFrame.origin), // Stay at home for delay
                NSValue(CGPoint: self.awayLabelFrame.origin), // Move to away
                NSValue(CGPoint: self.awayLabelFrame.origin), // Stay at away for delay
                NSValue(CGPoint: self.homeLabelFrame.origin)  // Move back to home
            ]
            
            let layer = self.sublabel.layer
            let anim = self.keyFrameAnimationForProperty("position", values: values, interval: interval, delay: delay)
            
            return [(layer: layer, anim: anim)]
        }
        
        // Create curried function for callback
        let callback = MarqueeLabel.scrollAway
        
        // Scroll
        scroll(interval, delay: delay, scroller: scroller, callback: callback)
    }

    
    private func scrollContinuous(interval: CGFloat, delay: CGFloat) {
        let scroller = { (interval: CGFloat, delay: CGFloat) -> [(layer: CALayer, anim: CAKeyframeAnimation)] in
            // Create animation for positions
            var offset: CGFloat = 0.0
            var scrolls: [(layer: CALayer, anim: CAKeyframeAnimation)] = []
            for sl in self.allSublabels() {
                // Create values, bumped by the offset
                let values: [NSValue] = [
                    NSValue(CGPoint: self.offsetCGPoint(self.homeLabelFrame.origin, offset: offset)), // Start at home
                    NSValue(CGPoint: self.offsetCGPoint(self.homeLabelFrame.origin, offset: offset)), // Stay at home for delay
                    NSValue(CGPoint: self.offsetCGPoint(self.awayLabelFrame.origin, offset: offset))  // Move to away
                ]
                
                // Generate animation
                let layer = sl.layer
                let anim = self.keyFrameAnimationForProperty("position", values: values, interval: interval, delay: delay)
                
                // Add to scrolls
                scrolls += [(layer: layer, anim: anim)]
                
                // Increment offset
                offset += (self.homeLabelFrame.origin.x - self.awayLabelFrame.origin.x)
            }
            
            return scrolls
        }
        
        // Create curried function for callback
        let callback = MarqueeLabel.scrollContinuous
        
        // Scroll
        scroll(interval, delay: delay, scroller: scroller, callback: callback)
    }
    
    private func applyGradientMask(fadeLength: CGFloat, animated: Bool) {
