 extension Position: PositionLocationCenterDelegate {
 
     func positionLocationCenter(positionLocationCenter: PositionLocationCenter, didChangeLocationAuthorizationStatus status: LocationAuthorizationStatus) {
-        let enumerator = self.observers.objectEnumerator()
-        while let observer: PositionObserver = enumerator.nextObject() as? PositionObserver {
+        let enumerator = self.observers?.objectEnumerator()
+        while let observer: PositionObserver = enumerator?.nextObject() as? PositionObserver {
             observer.position(self, didChangeLocationAuthorizationStatus: status)
         }
     }
     
     func positionLocationCenter(positionLocationCenter: PositionLocationCenter, didFailWithError error: NSError?) {
-        let enumerator = self.observers.objectEnumerator()
-        while let observer: PositionObserver = enumerator.nextObject() as? PositionObserver {
+        let enumerator = self.observers?.objectEnumerator()
+        while let observer: PositionObserver = enumerator?.nextObject() as? PositionObserver {
             observer.position(self, didFailWithError : error)
         }
     }
     
     func positionLocationCenter(positionLocationCenter: PositionLocationCenter, didUpdateOneShotLocation location: CLLocation?) {
-        let enumerator = self.observers.objectEnumerator()
-        while let observer: PositionObserver = enumerator.nextObject() as? PositionObserver {
+        let enumerator = self.observers?.objectEnumerator()
+        while let observer: PositionObserver = enumerator?.nextObject() as? PositionObserver {
             observer.position(self, didUpdateOneShotLocation: location)
         }
     }
     
     func positionLocationCenter(positionLocationCenter: PositionLocationCenter, didUpdateTrackingLocations locations: [CLLocation]?) {
-        let enumerator = self.observers.objectEnumerator()
-        while let observer: PositionObserver = enumerator.nextObject() as? PositionObserver {
+        let enumerator = self.observers?.objectEnumerator()
+        while let observer: PositionObserver = enumerator?.nextObject() as? PositionObserver {
             observer.position(self, didUpdateTrackingLocations: locations)
         }
     }
     
     func positionLocationCenter(positionLocationCenter: PositionLocationCenter, didUpdateFloor floor: CLFloor) {
-        let enumerator = self.observers.objectEnumerator()
-        while let observer: PositionObserver = enumerator.nextObject() as? PositionObserver {
+        let enumerator = self.observers?.objectEnumerator()
+        while let observer: PositionObserver = enumerator?.nextObject() as? PositionObserver {
             observer.position(self, didUpdateFloor: floor)
         }
     }
 
     func positionLocationCenter(positionLocationCenter: PositionLocationCenter, didVisit visit: CLVisit?) {
-        let enumerator = self.observers.objectEnumerator()
-        while let observer: PositionObserver = enumerator.nextObject() as? PositionObserver {
+        let enumerator = self.observers?.objectEnumerator()
+        while let observer: PositionObserver = enumerator?.nextObject() as? PositionObserver {
             observer.position(self, didVisit: visit)
         }
     }


public class Position: NSObject {

    private var observers: NSHashTable
	
    // location types
    private let locationCenter: PositionLocationCenter

		self.activityQueue = NSOperationQueue()
		self.motionActivityStatus = CMMotionActivityManager.isActivityAvailable() ? .NotDetermined : .NotAvailable
		self.lastActivity = .Unknown
				
        super.init()
		
        locationCenter.delegate = self
