Both the API and the implementation changed to be polymorphic wrt to the monad it operates in.