add tag function
remove duplicate code