new architecture: 3 modules