Adding observer impl and tests