We can't assume encoded lengths, so do it all in lists.