add cpp wrapper