Add Observer interface
added comments
removed fun and originality