added custom exceptio s