added custom exception class