refactor header files and include directives