Simple abstract solution for observable pattern