Module based on observer pattern