header remake and refactor