compiles correctly