added header include guards