why cpp