hm maybe it would be better to have another method for failures instead of lumping it into the after call