more use of exceptions