use atomic ref counter in intrusive pointers