Changed architecture to use Observer Pattern, Updated Interface