             }
         }
         
-        let compl: ((Bool) -> Void) = { _ in
-            for item in itemsToChange {
-                item.hidden = hidden
-                item.transform = CGAffineTransformIdentity
+        let compl: ((Bool) -> Void) = { completed in
+            if completed {
+                for item in itemsToChange {
+                    item.hidden = hidden
+                    item.transform = CGAffineTransformIdentity
+                }
             }
             completion?()
         }
         
         if animated {
-            UIView.animateWithDuration(0.2, animations: anim, completion: compl)
+            UIView.animateWithDuration(AnimationDuration, delay: 0, options: .BeginFromCurrentState, animations: anim, completion: compl)
+            //UIView.animateWithDuration(0.2, animations: anim, completion: compl)
         } else {
             anim()
             compl(true)

    private var locationTrackingImage: UIImageView
    private var locationTrackingWithHeadingImage: UIImageView
    private var trackingActivityIndicator: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
    
    internal private(set) var viewState: ViewState = .Initial
    
    private let trackingLocationImageName = "TrackingLocation"
    private let trackingLocationOffImageName = "TrackingLocationOff"
    private let trackingLocationWithHeadingImageName = "TrackingLocationWithHeading"

    internal enum ViewState {
        case Initial

    }
    
    private func updateState(forMapView mapView: MKMapView, animated: Bool) {
        
        dispatch_sync(serialQueue) {
            let nextState: ViewState
            switch mapView.userTrackingMode {
            case _ where self.isMapViewRetrievingLocation(mapView):
                nextState = .RetrievingLocation
            case .Follow:
                nextState = .TrackingLocation
            case .FollowWithHeading:
                nextState = .TrackingLocationWithHeading
            default:
                nextState = .TrackingLocationOff
            }
            self.transitionToState(nextState, animated: animated)
        }
    }
    
    private func isMapViewRetrievingLocation(mapView: MKMapView) -> Bool {
