Having “been there, done that” very recently... let me toss-in what it took me a very long time to figure out. (For whatever it may be worth...)
(1) The methods (like "add_thingies") are iautomagically created for you/i by Moose, and they are attached to the iobject/i. In effect, they serve to iconceal/i from any of the object's clients that the underlying data structure exists.
(2) Sometimes it's overkill. Sometimes List::Util and so-forth just works best. Also, I've had my buttsky saved dozens of times now by Data::Util's instance() function... The very-nicest thing about Moose is, “it's still Perl.”