use cas instead of set to prevent write collisions