@andrewtennison 
At the moment, the `getTarget` and `testHidden` are coupled to `Collapsible` via `opts.activeClass` et al.  To have a cleaner interface (and give a negligible speed improvement), pass the actual value rather than an object. It's will make it clearer what args each method expects. 

```js
var _testHidden = function(target, activeClass, inActiveClass){
if( target.hasClass(inactiveClass) ) return true;
if( target.hasClass(activeClass) ) return false;
return target.is(':hidden');
};
```
```js
var _getTarget = function($el, targetType){
switch(targetType){
case 'class':
}
```
The methods don't have to be on the prototype; they can be within the constructor and then accessed as part of the instance. Whether they modify the DOM or not shouldn't be a factor of whether they appear on the prototype.

```js
  function Collapsible() {
    var aPrivateVariable = 'something private';

    this._getTarget = function(){
      // The guts of your (priviliged) method
      // You could pass aPrivateVariable as a private variable if required
      return target;
    };
    this._testHidden = function(){
      return whatever;
    };
  }
  Collapsible.prototype.myMethod = function(){
    // Use getTarget
    // this._getTarget();
    // this._testHidden();
  };
  
```

There's a small performance tradeoff by having them as part of the instance as opposed to on the prototype, but I think that's a small price to pay if you require private properties/methods.