added label abstraction