implemented observer and observable classes