add `subscribe` method