generator and orchestrator implement protocol, not depend on it.