header and footer can be functions