Added consumer abstraction