Расширенная версия данного поста: http://whfb.reactor.cc/post/4416511