swap weak and shared ptrs in exclsive associations, possibly buggy