reorged so that whole workflow can be contained in its workflow object