One possibility would be to add a #validate! (a la Addressable::URI) method - in a perfect world, I think I'd like to see attribute_writer style methods for the various directives, to support use along the lines of:

```
cc = CacheControl.new
cc.no_store = true
cc.extensions.merge(:community => "public")
cc.validate!
cc.to_s
```

Until then, there's no reason not to validate on create, though.