refactoring header interface