might be possible to split into submethods

enqueuing -> collecting results