use include guards and extern C in all headers