include guards
refactoring