should probably have it pass the error to the callback