Я морально готов зачесть работу с неудачной архитектурой, но при условии, что все функциональные требования выполнены. Пока что, для вашего кода это не так.

Сделайте, как получится, а на семинаре через 6 часов (черт...) я покажу удачные примеры.