Как построить грамотную структуру?
Так же как и всегда: сделать декомпозицию задачи на более маленькие подзадачи/модули и так разбивать до самого низа. Например, взять какую-либо утилиту для рисования диаграмм и на диаграмме отобразить взаимоотношения модулей. Вот мой пример из реальной жизни: