in reply to OO style question: how much information to hide?
Concerning "tokens", is the start-tag-ed-ness of a Token inseparable from being a Token? Or is it, rather, an attribute imposed by having a Grammar? (Of course, that speculation may be beyond the scope of a ::Simple module.)
About "deletion", I suggest contemplating this question: What response does the object implementing the collection of attributes within the Token give if it is asked to delete an attribute that it does not contain? :-)
...every application I have ever worked on is a glorified munger...