why do we have all these different error types if we don't show the user anything to report the specific error type?