put the ifndef/def at the top of the file to prevent double-inclusion