add subscribe/unsubscribe methods