introduced TagSet (currently fails unit tests, needs some refactoring)