better exception naming/handling