Tidied up exception handling - more user friendly