add cpp version proxy pattern