implemented with JAva BlockingQueues