fix #867 + рефакторинг