Source: http://www.cs.ioc.ee/~stulov/appl08.pdf