updated code to be more semantic (header, footer, etc.)