it has to be compiled in C99