 		if let location = location {
 			// present initial location if any
 			self.location = location
-			showCoordinates(location.coordinate)
-		}
-	}
-	
-	public override func viewWillDisappear(animated: Bool) {
-		super.viewWillDisappear(animated)
-		
-		if isMovingFromParentViewController() || isBeingDismissed() {
-			completion?(location)
+			showCoordinates(location.coordinate, animated: false)
 		}
 	}
 	

extension LocationPickerViewController: CLLocationManagerDelegate {
	public func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
		if let locations = locations as? [CLLocation], location = locations.first {
			for listener in reverse(currentLocationListeners) {
				listener.action(location)
			}
			currentLocationListeners = currentLocationListeners.filter { !$0.once }
		}
		manager.stopUpdatingLocation()
	}
}


		locationManager.startUpdatingLocation()
	}
	
	func currentLocationPressed() {
		showCurrentLocation()
	}
	
	func showCurrentLocation(animated: Bool = true) {
		mapView.showsUserLocation = true
		let listener = CurrentLocationListener(context: nil, once: true) { [weak self] location in
			self?.showCoordinates(location.coordinate, animated: animated)
		}
