1. refactory modules
2. add domains