refactor NetChan to Link