How do you get a reference property to trigger a property observer?

In order to demonstrate my problem I wrote a simple MVC program with one button and one label. The button increments a counter in the model and displays the value of the counter in the label in the view controller. 

The problem is that the counter increment (in the model) does not trigger the didSet observer ( in the view controller)

Here is the model file:

```
import Foundation

class MvcModel {
    var counter: Int
    var message: String

    init(counter: Int, message: String) {
        self.counter = counter
        self.message = message
    }
}

// create instance
var model = MvcModel(counter: 0, message: "" )

// counting
func incrementCounter() {
    model.counter += 1
    model.message = "Counter Value:  \(model.counter)"
    //print(model.message)
}

```

Here is the view controller file:

```
import Cocoa

class ViewController: NSViewController {

    let model1 = model

    var messageFromModel = model.message {
        didSet {
            updateDisplayCounterLabel()
        }
    }

    // update Label
    func updateDisplayCounterLabel() {
        DisplayCounterLabel.stringValue = model1.message
    }

    // Label
    @IBOutlet weak var DisplayCounterLabel: NSTextField! {
        didSet {
            DisplayCounterLabel.stringValue = "counter not started"
        }
    }

    // Button
    @IBAction func IncrementButton(_ sender: NSButton) {
        incrementCounter()
        print("IBAction:  \(model1.message)")
    }
}

```

I guess the problem is linked to reference property (as I have been able to make this program work with a model based on a struct).

I would appreciate if someone could tell me how to deal with property observers and reference property and make this kind of MVC work as I plan to use it in real programs.