Settled with observers approach and added some xml docs