Нужен серьёзнейший рефакторинг