be more explicit about exception; plus tests