now with exception handling
derp