exception hierarchy fixed