split out to sim-model module