Refactor and redesign domains