Код интерактивного и батчевого режима нужно вынести отдельно.
Чтение-запись тоже.