Hm, now that I see the implementation of ValidatePlay, it keeps a pointer to EngineBuffer. This will introduce lifecycle issues if it outlives the EngineBuffer it has a pointer to. :-/ see my comments below about guidelines for implementing validators.