add optional observee weak reference support