cpp wrapper