4 10/10, now compiling with pedantic