Start of revise and refactor.