use MonadCatchIO while it's still possible