implemented tags from scratch
updated design