Refactor consumer singleton
Add infrastructure