still need to define smart types for Template, (Vec Keyword) should <: (Vec Parsable) (covariance?)