if columnize does the right thing with an empty list, can probably skip the empty list check, since that comprehension
will return an empty rows for an empty reasons