Update observer interface and add generics to stop conditions