observable updates