Use Control.Monad.Except instead