@flyboarder agree totally
actually now that I think about it, the easiest thing to do would be a multimethods + spec
kw -> spec -> validator kw -> multi-method -> generator
the default case could use the current implementation