split module into logical units using roles