added exceptions hierarchy