Предварительная версия.
Рефакторинг.