add Observer pull pattern