added a header include guard