это что-то страшное, может есть варианты с меньшим количество кода и дополнительных переменных?