c interface new approach