Add module and observer pattern