half way obserfer get refactor