full ErrorHandler implementation