better implemenation of observables