switched to our Result monad since Either stuff (mtl-2.2.1) keeps changing