better / simpler exception treatment