header/footer abstraction