Мы пытаемся исправить архитектуру, сделать "по-нормальному", а автору надо найти ошибку Index Out of Bounds.
Боюсь, что "по-нормальному" не получится, надо год-два подождать, чтобы автору это нужно было, если вообще что-то будет меняться. Посмотри, как именованы контролы, например.
Поэтому считаю, что следует подсказать, как найти ошибку и пусть плывёт себе дальше.
Хотя, если время свободное есть и автору будет интересно, можно руки повыпрямлять