added abstract base thread fence