Продолжил комментировать.
Изменил расположение методов внутри классов.
Нашел ошибку в архитектуре. Предложил решение (в комментариях)