Main programming: Michael Shigorin
Minor changes: Vladimir V. Kamarzin
