Initial code review

@evanstade Please review.  Hopefully the pull request flow will let you add comments.
> nit: I would organize the docs such that enable() and disable() are near each other.

i hope `disable()` will be used rarely enough that `custom()` *should* be higher on this list.

> Also document what the default state is (disabled I guess)

haven't decided the default state yet ;)