throw exception so that we can catch it above instead of hiding it