split out generators
move out dispatcher