Author: Konstantin Molchanov (CS-Cart team)