     }
     
     /**
+     Start Rapple progress indicator with text message
+     @param attribute progress UI attributes
+     */
+    public class func startAnimatingWithLabel(label : String, attributes:[String:AnyObject]) {
+        RappleActivityIndicatorView.sharedInstance.attributes = attributes
+        RappleActivityIndicatorView.sharedInstance.text = label
+        RappleActivityIndicatorView.startAnimating()
+    }
+    
+    /**
      Start Rapple progress indicator
      */
     public class func stopAnimating() {
         let keyWindow = UIApplication.sharedApplication().keyWindow
         keyWindow?.userInteractionEnabled = true
         
-        let view = RappleActivityIndicatorView.sharedInstance
-        
-        view.backgroundView.layer.sublayers = nil
+        let progress = RappleActivityIndicatorView.sharedInstance
         
         UIView.animateWithDuration(0.5, animations: { () -> Void in
-            view.backgroundView.alpha = 0.0
+            progress.backgroundView?.alpha = 0.0
             keyWindow?.tintAdjustmentMode = .Automatic
             keyWindow?.tintColorDidChange()
             }) { (finished) -> Void in
-                let views = view.backgroundView.subviews
-                for v in views {
-                    v.removeFromSuperview()
+                
+                if let views = progress.backgroundView?.subviews {
+                    for v in views {
+                        v.removeFromSuperview()
+                    }
                 }
-                view.backgroundView.removeFromSuperview()
-        }
-        
-        NSNotificationCenter.defaultCenter().removeObserver(view)
+                
+                progress.backgroundView?.removeFromSuperview()
+                
+                progress.backgroundView = nil
+        }
+        
+        
+        NSNotificationCenter.defaultCenter().removeObserver(progress)
     }
     
     func deviceOrientationDidChange(notif:NSNotification) {
-        let view = RappleActivityIndicatorView.sharedInstance
-        let views = view.backgroundView.subviews
-        for v in views {
-            v.removeFromSuperview()
-        }
-        view.backgroundView.removeFromSuperview()
-        
-        view.createProgress()
+        let progress = RappleActivityIndicatorView.sharedInstance
+        if let views = progress.backgroundView?.subviews {
+            for v in views {
+                v.removeFromSuperview()
+            }
+        }
+        progress.backgroundView?.removeFromSuperview()
+        progress.backgroundView = nil
+        
+        progress.createProgress()
+        progress.createProgressIndicator()
     }
     
     private func createProgress() {

/**
RappleActivityIndicatorView - Custom Activity Indicator with swift 2.0
*/
public class RappleActivityIndicatorView: NSObject {
    
    static let sharedInstance = RappleActivityIndicatorView()
    
    var backgroundView : UIView!
    var text : String?
    
    /**
     Start Rapple progress indicator without any text message

        shapeLayer.addAnimation(startGroup, forKey: "start")
    }
    
}