     }
 
     // MARK: Helper methods
-    func updateFields() {
+    func updateFieldsFromNotification() {
         DispatchQueue.main.async {
             self.updateFieldsMainThread()
+            // Animate labels only when data is refreshed from server
+            self.animateLabelColors()
         }
     }
 }

        // Rotate wind vane based on wind speed.
        // Using a fudge factor of 120 / speed which provides ample visible animation.
        self.windX.rotate360Degrees(duration: 120 / object.windSpeed)
        
        animateLabelColors()
    }
    
    // MARK: Animations

    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Start refresh immediately
        WeatherLoader().refresh()
        
        let searchItem = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.search, target: self, action: #selector(showSearch))
        navigationItem.rightBarButtonItem = searchItem
        
        NotificationCenter.default.addObserver(self, selector: #selector(updateFieldsFromNotification), name: .weatherNotification, object: nil)
    }
    
    deinit {
