added exception classes
enhanced exception handling