refactored all types of tags just to be the Tag class with type parameters