refactor consumers to work properly and still be testable