Observer and strategy patterns added