Roster Management in smack 4.1.5

Hi I am working on some android stuff related to xmpp.

I have been working on the Roster management for a user and must say that Roster management using smack is really confusing if you want to manage it manually

First and foremost why do I need to register a Roster Listener when I can listen to individual Presence packets with type=“subscribe” and type=“subscribed”.

In case I go with the class RosterListener e.g. shown here, then the entry that is added/updated/deleted does not have the subscription status.

My overall question is what listeners do I need to register if I need to maintain Roster manually in my application?