reduce repetition by using templates
add 'tag' doc
[wip]