Use a monad for the try functions to propagate whether something has changed or not