observer pattern was added.
And project finalised.