refactoring out async consumer classes