move concurrency concerns to the user