rethink throw. Fixes #630