added an experimantal C interface