use weakref for parent, hide b[name] = self's in a function, => 100% less memory leaks