change to functional async workflow
finish async generate function
add basic templates
remove test spec