use a deep merge for updating values