refactor
add Template