ObserverMethodListener now uses WeakReference to instance (instead of strong reference)