added include guards to the headers