Убрал несколько функций, т.к. они не работали (по крайней мере на Линуксе), видимо плохо протестил на занятиях.