created observer and observable interfaces, working on trying to create strategy pattern for production