interpret empty strings as nulls on update