enhance update by custom id