make observer private?