use buffered channels for processing pipeline