relax version dependencies
Add derive*With (customizable key name)