Added extern C, ... parameter, and more advanced parameters