use extern c only