Предыдущие части: http://lol.reactor.cc/post/1373928
более одетый вариант: http://joyreactor.cc/post/5008016