developed by Pavel Kartsev and Alexey Vinogradov GPL v.3