Lots of refactoring -- use existing methods to implement others at a minor cost.