Confused about the API

I see that ISldworks has the methods addMenu and Addtoolbar. Also, addMenu  exists in IFrame. The Icommandmanager->ICommandGroup also has the function AddCommandItem2.  So the question is why there are so many ways to add a menu or toolbar. Is there difference or they should be used in different conditions?   Thanks.

SolidworksApi macros