catch exceptions closer to their source to enable alternatives to be
used