hesitation uses compare and swap