Refactor and redesign domains

Any suggestion ??