Поревьюил.

Поревьюил код, есть вопросы )
Ещё часть добавлю сразу в виде issues.