Created the a better version of observer and observable