added custom exception for better logging and improved UI