some simplification of ObservableListener