have to use the done paradigm to keep processing queue