Add generic to ObserverManager and ObserverWithCashe