compiles on gcc