implemented an observable cache to avoid calculating observables multiple times; tweaked the refinement during the SR cycle