[Nathan] Added more logic to Producers. Changed some of the implementation of agents.