proxy and observer patterns