Fork from http://hg.dion.org.ua/gluxi-dev/file/dd73848a3c6c