Update documentation and refactor to make customizations simpler.