wrapping puzzle headers in extern C to fix dynamic linking