Исправлены ошибки, проведен рефакторинг