Опять начались повторения кода, и совершенно очевидно что это симптом каких-то проблем дизайна. Я думаю что если вы исправите замечание выше (подумайте хорошо), то сразу станет понятно что нужно сделать здесь.