added __cplusplus extern "C" stuff.