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

        // Dispose of any resources that can be recreated.
    }

    // MARK: UI Methods
    // TODO: A View-Model is appropriate here.
    func clearFields() {

    
    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 {
