refactory workflow, use component-skeleton
all source code changed, new api