Implements Observer trait

This is an example on how better abstraction could be made with a trait.
This makes sense on how a trait is supposed to give functionality but not necessarily declare what the class really does.

This is the only clean way I found that could, if wanted to, be applied to the controller (or just classes that isn't really observers, but will act like one)

In the next commit I'll show how we can now change from using an interface.