these methods (and the state they mutate) don't need to be members of MPing - they could be in an anonymous namespace in this file instead.