 
 ///  Main manager class of Butterfly
 
-public class ButterflyManager: NSObject {
+open class ButterflyManager: NSObject {
     
     /// You can access instance variable `imageWillUpload` directly.
-    public var imageWillUpload: UIImage? {
+    open var imageWillUpload: UIImage? {
         return self.butterflyViewController?.imageWillUpload
     }
     
     /// Or instance variable `textWillUploader`.
-    public var textWillUpload: String? {
+    open var textWillUpload: String? {
         return self.butterflyViewController?.textWillUpload
     }
     
     /// Manager is listening shake event or not.
-    public var isListeningShake: Bool?
+    open var isListeningShake: Bool?
     
     /// Shared manager used by the extension across Butterfly.
-    public class var sharedManager: ButterflyManager {
+    open class var sharedManager: ButterflyManager {
         return instance
     }
     

    
    /// Unregister and stop listening shake event.
    /// Optional: you can just listen the specific one (viewController) you want.
    public func stopListeningShake() {
        NSNotificationCenter.defaultCenter().removeObserver(
            self,
            name: Notification.ButterflyDidShakingNotification,
            object: nil)
        isListeningShake = false
    }
    
    /// Begin handling shake event.
    func handleShake(notification: NSNotification) {
        
        let screenshot = takeScreenshot()
        

    ///
    /// That would be a great idea to upload your useful application information here manually .
    
    func ButterflyViewControllerDidPressedSendButton(_ drawView: ButterflyDrawView?) {

        if let image = imageWillUpload {
            let data: UIImage = image
