added __cplusplus handling