https://acadtop.ru/video/how-to-c-professional-pattern-nvi/