updated throws exceptions