extern C has been added to .h