Refactor application of type decorators into an object

Right. I forget the argument of `Hash.new` is the default value.