made all raise statements raise (pure) Exceptions instead of strings