I think we should hide these optional params by putting the constructors all in the companion object and not having the hash be an option.  I think this allows the laziness of the hash to escape the confines of this API and bleed into dependent code.  Probably just take it out of the case class constructor params entirely.  Thoughts?