My rule of thumb would be for all api things not to depend on scribe, but receive scribe as a parameter. For things like selection, you could then hide this away by adding a helper on the scribe instance like `scribe.getSelection = function(){ return new this.api.Selection(this); }` or something. But generally, I'd not use consistency with what I'd consider an anti-pattern to drive the constraints on the API.

One reason, for instance, is that if you want to unit test a plugin that uses one of the simple element helpers, you end up needing to instanciate a whole Scribe instance!