ну да, только за "run()" кроется немало человекочасов Вашей работы, у в моей утопии идее всё это должен сгенерить транслятор, исходя из исходных данных (настройка проекта) и программы-описания требуемого конечного функционала
...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)