Added Observer Pattern and Controller