Добавил диаграмму UML.

Доделать диаграмму.

Сделал мелкий рефактоинг.