More documentation and cleanup

This PR brings in more documentation, removes code paths that were unreachable, and makes kwargs more self consistent.

I've also removed the extra layer of indirection that `init_block()` added. I think this makes the code easier to follow.