made separate classes for producer and consumer
added detailed breakdown of tasks
documented code