Question: It's been said that the goal of CSS is to provide visual presentation and the goal of HTML is to provide structure of the document. Well, thank goodness. It has gotten so much easier, especially compared to font tags! 

But in practice, it seems that way many of us still rely on HTML to use CSS when it shouldn't be there. For example, it's common to see a `<div id="wrapper">` to wrap around elements inside so the body can be centered. In pure HTML, it would never be used because it's meaningless and it's used ONLY for CSS. 

Right? So doesn't using `<div id="wrapper">` actually violate one of the fundamentals of content-presentation separation?

Answer: 
You can use something like:

```
<div id="content_container">
<div id="section_container">
<h2></h2>
<p>stuff</p>
</div>
</div>

```

And I believe this gives correct structure to your document. Though it would probably be nicer to have elements for this (like `<content>` and `<section>`), because id can only be meaning full for us not for parsing the document. div have no actual meaning it's just a container for block elements that's all and so I believe it cannot violate content-presentation separation.

Having said all that you could also use `<body>` element to center your content (it is an element after all), but I'm not 100% sure if it work in old IE (old meaning IE 6).
> 
> It's common to see a "DIV
>  id='wrapper'" to wrap around elements
>  inside so the body can be centered. In
>  pure HTML, it would never be used
>  because it's meaningless and it's used
>  ONLY for CSS.
> 
> 
> 

Is a containing wall not a structural piece of a building? I would argue that a containing wall is in fact one of the most common structural pieces you can find in elements.

> 
> So doesn't using DIV id=wrapper
>  actually violate one of the
>  fundamentals of content-presentation
>  separation?
> 
> 
> 

No, A containing element (or a `<div id="wrapper">`) is just as much the structure of a document as a `<header>` `<nav>` `<body>` or `<article>`.

Even if it weren't considered structural, the goal of unobtrusive design is to separate *as much as reasonably possible* structure (HTML) from style (CSS) and behavior (JavaScript). In the end, unobtrusive design is really just a set of best-practice guidelines to follow to create more maintainable code.

Breaking the rules wont invalidate your code, and often times breaking the rules can create *better, more maintainable* code. As you design more and more, you will quickly learn that you sometimes have to go against the grain and ignore best-practices.