adding qcp implementation