         }
     }
 
-    override init() {
-        manager = CLLocationManager()
-        allLocationListeners = [LocationListener]()
+    override convenience init() {
+        self.init(manager: CLLocationManager())
+    }
+    
+    init(manager: ELCLLocationManager) {
+        self.manager = manager
+        self.allLocationListeners = [LocationListener]()
         super.init()
         manager.delegate = self
     }


// MARK: Internal location manager class

/**
This is the internal class that is set up as a singleton that interfaces with `CLLocationManager` and adopts
the protocols that define `ELLocation` services in the public API.

    
    // MARK: Properties, initializers and internal structures
    
    var manager: ELCLLocationManager
    private var allLocationListeners: [LocationListener]

    /// The current Core Location authorization status
    private var authorizationStatus: CLAuthorizationStatus {
        return manager.coreLocationAuthorizationStatus
    }

    /// The accuracy, based on the current set of listener requests.
