now using a custom exception