Divided into 3 modules