 
 extension NSObject {
     
-    private var _ich_listener:_ICanHasListener! {
-        set {
-            
-            objc_setAssociatedObject(self, &_ICanHasListenerHandler, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
-        }
-        get {
-            return objc_getAssociatedObject(self, &_ICanHasListenerHandler) as? _ICanHasListener
-        }
-    }
+//    private var _ich_listener:_ICanHasListener! {
+//        set {
+//            
+//            objc_setAssociatedObject(self, &_ICanHasListenerHandler, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
+//        }
+//        get {
+//            return objc_getAssociatedObject(self, &_ICanHasListenerHandler) as? _ICanHasListener
+//        }
+//    }
     
 //    //Empty implementations:
     //Added implementations
-    public func _ICanHas_empty_locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) { }
+//    public func _ICanHas_empty_locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { }
     
 //    public func _ICanHas_empty_application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { }
 //    
 //    public func _ICanHas_empty_application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { }
     
     //Added implementations
-    public func _ICanHas_locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
-        self._ich_listener?.locationManager(manager, didChangeAuthorizationStatus: status)
-        
-        self._ICanHas_locationManager(manager, didChangeAuthorizationStatus: status)
-    }
+//    public func _ICanHas_locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
+//        self._ich_listener!.locationManager(manager, didChangeAuthorizationStatus: status)
+//        
+//        print("DID CHANGE BEING CALLED!!!!")
+//        
+//        self._ICanHas_locationManager(manager, didChangeAuthorizationStatus: status)
+//    }
     
 //    public func _ICanHas_application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
 //        self._ich_listener?.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)

    
}

public class _ICanHasListener:NSObject,CLLocationManagerDelegate,UIApplicationDelegate {
    var changedLocationPermissions:((CLAuthorizationStatus)->Void)!
    var registeredForPush:((NSData)->Void)!
    var failedToRegisterForPush:((NSError)->Void)!
    
    public func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
        self.changedLocationPermissions?(status)
    }
    
//    public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
//        self.registeredForPush?(deviceToken)
//    }
//    public func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
//        self.failedToRegisterForPush?(error)
//    }
}

                        manager.requestAlwaysAuthorization()
                    }else {
                        
                        print("RIGHT NOW REQUESTING!!!!!")
                        
                        assert(
                            NSBundle.mainBundle().objectForInfoDictionaryKey(
                                "NSLocationWhenInUseUsageDescription"
