compiles on gcc 4.6.3