exception handling *really* works now