implement tm and list lock