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: 
In any case "wrapper" is a bad choice for an id. In general, wrapping DIV's are not used for simple alignment tasks alone (use a SPAN otherwise) and do provide/determine a structure for your web page. Therefore, in my opinion, wrapping DIV's do not violate the content-presentation separation.
My personal opinion is wrappers have a very useful and necessary purpose although I dont use the term wrapper. Consider a div that has a set width of 200px but we want a border without effecting the width of the div we would need this solution:

```
div#posts {
    width: 200px;
    height: 200px;
}
div#posts-inner {
    padding: 10px;
    border: 1px solid #ccc;
}

<div id="posts"><div id="posts-inner">
    <p>My Posts</p>
</div></div>

```

If you markup your CSS effectively you can avoid examples of less useful css declarations like:

```
#posts {
    border: 1px solid #ccc;
}

```

If you put your CSS elements into context rather than assuming what its class represents

```
div#posts-wrapper {
    border: 1px solid #ccc;
}

```

This would improve the separation of design and content elements in your css.