Much refactor.