added include guards