http://paste.ircnet.su/view/945e23c2