Is there a reason you can't call BpmControl::syncPhase() here? (Either make the method public or make SyncControl a friend class?). This would get rid of the need to change EngineBuffer at all.