added weakref test and fixed observer lists to be weakrefs