addressing code review comments: mainly using Exceptions rather than Throwable