added exception classes & improved messages