more weakening to avoid memory leak
weaken more circular references