Законченная версия этого http://vn.reactor.cc/post/3651913