Функции практически идентичны. Может быть, стоит сократить повторяющийся код?