producer/consumer

close to done