restructure a little to support shared RX/TX
smooth some rough edges, report correct lengths in completions