well, i'm of a strong opinion that directives shouldn't be exposed. its internal state. why have the methods at all? 
i may as well say `.directives[:no_cache]`. same thing. `#[]=` on this class lets you control what happens when directives change. I wouldn't worry about first, second, or third iteration, but getting it right before it goes into master.