Ну посмотрев код на гитхабе, скажу, что в части ООП вам еще много чего предстоит понять. Особенно как делегировать полномочия и что это такое вообще.
Понять суть абстракций, не просто выучить, а понять где, зачем и почему, что бы не дублировать. Где располагать классы сервисов, утилс и т.п.
Ну и самое важное, это паттерны в этом случае, придется тоже понять зачем и почему.