UPD: поправил стилистику
UPD: рефакторинг