subscribe and unsubscribe methods first implementation