producer first iteration
consumer first version