Рабочая версия.

Толком тестирование не проводилось. Стоит потетстить тщательно, баги
наверняка есть.