мелкие поправки
Большая переделка функционала