we may want to have more granularity in the exception hierarchy