make space for errors
callback immediately on error
refactor completion handler