groove.h conforms to C90