simplified exception hierarchy