Добавил комментарии, исправил несколько багов.