Seamless renaming using a custom monad