C interface