add comment
update
add new template pattern