split to 4 modules