#1 Added custom exceptions