tag abstraction