new exception class and improved search