full data train state machine, untested