observer pattern not working out. Will give command pattern a try to replace it as my behavioral design pattern.