refactored producer and consumer to subclass participant