Compatible with C99