add update function; set returns this