Rows were already too long to fit on a standard-width terminal, yet we were truncating names to fit in an arbitrary width.  Instead put the table name on the right and let it fill all available space.
Call ClearLine() after displaying each row so that displaying a shorter row when the display updates will not pollute the side of the screen.
Make sure we don't try to draw lines too low down on the screen.
        app.screen.BoldPrintAt(0, 2, app.tiwsbt.Headings())
 
        max_rows := app.screen.Height() - 3
+       last_row := app.screen.Height() - 1
        row_content := app.tiwsbt.RowContent(max_rows)
 
        // print out rows
        for k := range row_content {
                y := 3 + k
                app.screen.PrintAt(0, y, row_content[k])
+               app.screen.ClearLine(len(row_content[k]), y)
        }
        // print out empty rows
-       for k := len(row_content); k < (app.screen.Height() - 3); k++ {
+       for k := len(row_content); k < max_rows; k++ {
                y := 3 + k
-               if y < app.screen.Height()-1 {
+               if y < max_rows - 1 {
                        app.screen.PrintAt(0, y, app.tiwsbt.EmptyRowContent())
                }
        }
 
        // print out the totals at the bottom
-       app.screen.BoldPrintAt(0, app.screen.Height()-1, app.tiwsbt.TotalRowContent())
+       total := app.tiwsbt.TotalRowContent()
+       app.screen.BoldPrintAt(0, last_row, total)
+       app.screen.ClearLine(len(total), last_row)
 }
 
 // show actual I/O latency values
        app.screen.BoldPrintAt(0, 2, app.fsbi.Headings())
 
        // print out the data
-       max_rows := app.screen.Height() - 3
+       max_rows := app.screen.Height() - 4
+       last_row := app.screen.Height() - 1
        row_content := app.fsbi.RowContent(max_rows)
 
        // print out rows
        for k := range row_content {
                y := 3 + k
                app.screen.PrintAt(0, y, row_content[k])
+               app.screen.ClearLine(len(row_content[k]), y)
        }
        // print out empty rows
-       for k := len(row_content); k < (app.screen.Height() - 3); k++ {
+       for k := len(row_content); k < max_rows; k++ {
                y := 3 + k
-               if y < app.screen.Height()-1 {
+               if y < last_row {
                        app.screen.PrintAt(0, y, app.fsbi.EmptyRowContent())
                }
        }
 
        // print out the totals at the bottom
-       app.screen.BoldPrintAt(0, app.screen.Height()-1, app.fsbi.TotalRowContent())
+       total := app.fsbi.TotalRowContent()
+       app.screen.BoldPrintAt(0, last_row, total)
+       app.screen.ClearLine(len(total), last_row)
 }
 
 func (app *App) displayLocks() {
        app.screen.BoldPrintAt(0, 2, app.tlwsbt.Headings())
 
        // print out the data
-       max_rows := app.screen.Height() - 3
+       max_rows := app.screen.Height() - 4
+       last_row := app.screen.Height() - 1
        row_content := app.tlwsbt.RowContent(max_rows)
 
        // print out rows
        for k := range row_content {
                y := 3 + k
                app.screen.PrintAt(0, y, row_content[k])
+               app.screen.ClearLine(len(row_content[k]), y)
        }
        // print out empty rows
        for k := len(row_content); k < (app.screen.Height() - 3); k++ {
                y := 3 + k
-               if y < app.screen.Height()-1 {
+               if y < last_row {
                        app.screen.PrintAt(0, y, app.tlwsbt.EmptyRowContent())
                }
        }
 
        // print out the totals at the bottom
-       app.screen.BoldPrintAt(0, app.screen.Height()-1, app.tlwsbt.TotalRowContent())
+       total := app.tlwsbt.TotalRowContent()
+       app.screen.BoldPrintAt(0, last_row, total)
+       app.screen.ClearLine(len(total), last_row)
 }
 
 func (app *App) displayUsers() {
        app.screen.BoldPrintAt(0, 2, app.users.Headings())
 
        // print out the data
-       max_rows := app.screen.Height() - 3
+       max_rows := app.screen.Height() - 4
+       last_row := app.screen.Height() - 1
        row_content := app.users.RowContent(max_rows)
 
        // print out rows
        for k := range row_content {
                y := 3 + k
                app.screen.PrintAt(0, y, row_content[k])
+               app.screen.ClearLine(len(row_content[k]), y)
        }
        // print out empty rows
-       for k := len(row_content); k < (app.screen.Height() - 3); k++ {
+       for k := len(row_content); k < max_rows; k++ {
                y := 3 + k
-               if y < app.screen.Height()-1 {
+               if y < last_row {
                        app.screen.PrintAt(0, y, app.users.EmptyRowContent())
                }
        }
 
        // print out the totals at the bottom
-       app.screen.BoldPrintAt(0, app.screen.Height()-1, app.users.TotalRowContent())
+       total := app.users.TotalRowContent()
+       app.screen.BoldPrintAt(0, last_row, total)
+       app.screen.ClearLine(len(total), last_row)
 }
 
 func (app *App) displayMutex() {
        app.screen.BoldPrintAt(0, 2, app.ewsgben.Headings())
 
        // print out the data
-       max_rows := app.screen.Height() - 3
+       max_rows := app.screen.Height() - 4
+       last_row := app.screen.Height() - 1
        row_content := app.ewsgben.RowContent(max_rows)
 
        // print out rows
        for k := range row_content {
                y := 3 + k
                app.screen.PrintAt(0, y, row_content[k])
+               app.screen.ClearLine(len(row_content[k]), y)
        }
        // print out empty rows
-       for k := len(row_content); k < (app.screen.Height() - 3); k++ {
+       for k := len(row_content); k < max_rows; k++ {
                y := 3 + k
-               if y < app.screen.Height()-1 {
+               if y < last_row {
                        app.screen.PrintAt(0, y, app.ewsgben.EmptyRowContent())
                }
        }
 
        // print out the totals at the bottom
-       app.screen.BoldPrintAt(0, app.screen.Height()-1, app.ewsgben.TotalRowContent())
+       total := app.ewsgben.TotalRowContent()
+       app.screen.BoldPrintAt(0, last_row, total)
+       app.screen.ClearLine(len(total), last_row)
 }
 
 func (app *App) displayStages() {
        app.screen.BoldPrintAt(0, 2, app.essgben.Headings())
 
        // print out the data
-       max_rows := app.screen.Height() - 3
+       max_rows := app.screen.Height() - 4
+       last_row := app.screen.Height() - 1
        row_content := app.essgben.RowContent(max_rows)
 
        // print out rows
        for k := range row_content {
                y := 3 + k
                app.screen.PrintAt(0, y, row_content[k])
+               app.screen.ClearLine(len(row_content[k]), y)
        }
        // print out empty rows
-       for k := len(row_content); k < (app.screen.Height() - 3); k++ {
+       for k := len(row_content); k < max_rows; k++ {
                y := 3 + k
-               if y < app.screen.Height()-1 {
+               if y < last_row {
                        app.screen.PrintAt(0, y, app.essgben.EmptyRowContent())
                }
        }
 
        // print out the totals at the bottom
-       app.screen.BoldPrintAt(0, app.screen.Height()-1, app.essgben.TotalRowContent())
+       total := app.essgben.TotalRowContent()
+       app.screen.BoldPrintAt(0, last_row, total)
+       app.screen.ClearLine(len(total), last_row)
 }
 
 // do we want to show all p_s data?
 
 type pl_by_user_rows []pl_by_user_row
 
 /*
-username      |Run Time   %age|Sleeping      %|Conn Actv|Hosts DBs|Sel Ins Upd Del Oth|
-xxxxxxxxxxxxxx|hh:mm:ss 100.0%|hh:mm:ss 100.0%|9999 9999|9999  999|999 999 999 999 999|
+Run Time   %age|Sleeping      %|Conn Actv|Hosts DBs|Sel Ins Upd Del Oth|username
+hh:mm:ss 100.0%|hh:mm:ss 100.0%|9999 9999|9999  999|999 999 999 999 999|xxxxxxxxxxxxxx
 */
 
 func (r *pl_by_user_row) headings() string {
-       return fmt.Sprintf("%-14s|%-8s %6s|%-8s %6s|%4s %4s|%5s %3s|%3s %3s %3s %3s %3s|",
-               "User", "Run Time", "%", "Sleeping", "%", "Conn", "Actv", "Hosts", "DBs", "Sel", "Ins", "Upd", "Del", "Oth")
+       return fmt.Sprintf("%-8s %6s|%-8s %6s|%4s %4s|%5s %3s|%3s %3s %3s %3s %3s|%s",
+               "Run Time", "%", "Sleeping", "%", "Conn", "Actv", "Hosts", "DBs", "Sel", "Ins", "Upd", "Del", "Oth", "User")
 }
 
 // generate a printable result
 func (r *pl_by_user_row) row_content(totals pl_by_user_row) string {
-       var u string
-       if len(r.username) == 0 {
-               u = ""
-       } else if len(r.username) > 14 {
-               u = r.username[0:14]
-       } else {
-               u = r.username
-       }
-       return fmt.Sprintf("%-14s|%8s %6s|%8s %6s|%4s %4s|%5s %3s|%3s %3s %3s %3s %3s|",
-               u,
+       return fmt.Sprintf("%8s %6s|%8s %6s|%4s %4s|%5s %3s|%3s %3s %3s %3s %3s|%s",
                lib.FormatSeconds(r.runtime),
                lib.FormatPct(lib.MyDivide(r.runtime, totals.runtime)),
                lib.FormatSeconds(r.sleeptime),
                lib.FormatCounter(int(r.inserts), 3),
                lib.FormatCounter(int(r.updates), 3),
                lib.FormatCounter(int(r.deletes), 3),
-               lib.FormatCounter(int(r.other), 3))
+               lib.FormatCounter(int(r.other), 3),
+               r.username)
 }
 
 // generate a row of totals from a table
 
 // describe a whole row
 func (r pl_by_user_row) String() string {
-       return fmt.Sprintf("%v %v %v %v %v %v %v %v %v %v", r.username, r.runtime, r.connections, r.sleeptime, r.active, r.hosts, r.dbs, r.selects, r.inserts, r.updates, r.deletes, r.other)
+       return fmt.Sprintf("%v %v %v %v %v %v %v %v %v %v", r.runtime, r.connections, r.sleeptime, r.active, r.hosts, r.dbs, r.selects, r.inserts, r.updates, r.deletes, r.other, r.username)
 }
 
 // total time is runtime + sleeptime
 
        }
 }
 
-// stage name limited to 40 characters
-func (r *table_row) pretty_name() string {
-       s := r.name()
-       if len(s) > 40 {
-               s = s[:39]
-       }
-       return s
-}
-
 // add the values of one row to another one
 func (this *table_row) add(other table_row) {
        this.SUM_TIMER_WAIT += other.SUM_TIMER_WAIT
 
 // stage headings
 func (r *table_row) headings() string {
-       return fmt.Sprintf("%-40s|%10s %6s %8s|", "Stage Name", "Latency", "%", "Counter")
+       return fmt.Sprintf("%10s %6s %8s|%s", "Latency", "%", "Counter", "Stage Name")
 }
 
 // generate a printable result
 func (r *table_row) row_content(totals table_row) string {
-       name := r.pretty_name()
+       name := r.name()
        if r.COUNT_STAR == 0 && name != "Totals" {
                name = ""
        }
 
-       return fmt.Sprintf("%-40s|%10s %6s %8s|",
-               name,
+       return fmt.Sprintf("%10s %6s %8s|%s",
                lib.FormatTime(r.SUM_TIMER_WAIT),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WAIT, totals.SUM_TIMER_WAIT)),
-               lib.FormatAmount(r.COUNT_STAR))
+               lib.FormatAmount(r.COUNT_STAR),
+               name)
 }
 
 // describe a whole row
 func (r table_row) String() string {
-       return fmt.Sprintf("%-40s %10s %10s",
-               r.pretty_name(),
+       return fmt.Sprintf("%10s %10s %s",
                lib.FormatTime(r.SUM_TIMER_WAIT),
-               lib.FormatAmount(r.COUNT_STAR))
+               lib.FormatAmount(r.COUNT_STAR),
+               r.name())
 }
 
 // describe a whole table
 
        return n
 }
 
-func (r *table_row) pretty_name() string {
-       s := r.name()
-       if len(s) > 30 {
-               s = s[:29]
-       }
-       return s
-}
-
 func (r *table_row) headings() string {
-       return fmt.Sprintf("%-30s %10s %6s %6s", "Mutex Name", "Latency", "MtxCnt", "%")
+       return fmt.Sprintf("%10s %6s %6s %s", "Latency", "MtxCnt", "%", "Mutex Name")
 }
 
 // generate a printable result
 func (r *table_row) row_content(totals table_row) string {
-       name := r.pretty_name()
+       name := r.name()
        if r.COUNT_STAR == 0 && name != "Totals" {
                name = ""
        }
 
-       return fmt.Sprintf("%-30s|%10s %6s %6s",
-               name,
+       return fmt.Sprintf("%10s %6s %6s|%s",
                lib.FormatTime(r.SUM_TIMER_WAIT),
                lib.FormatAmount(r.COUNT_STAR),
-               lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WAIT, totals.SUM_TIMER_WAIT)))
+               lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WAIT, totals.SUM_TIMER_WAIT)),
+               name)
 }
 
 func (this *table_row) add(other table_row) {
 
 // describe a whole row
 func (r table_row) String() string {
-       return fmt.Sprintf("%-30s|%10s %10s %10s %10s %10s|%10s %10s|%10s %10s %10s %10s %10s|%10s %10s",
-               r.pretty_name(),
+       return fmt.Sprintf("%10s %10s %10s %10s %10s|%10s %10s|%10s %10s %10s %10s %10s|%10s %10s|%s",
                lib.FormatTime(r.SUM_TIMER_WAIT),
-               lib.FormatAmount(r.COUNT_STAR))
+               lib.FormatAmount(r.COUNT_STAR),
+               r.name())
 }
 
 // describe a whole table
 
        return r.FILE_NAME
 }
 
-// Return a formatted pretty name for the row.
-func (r *table_row) pretty_name() string {
-       s := r.name()
-       if len(s) > 30 {
-               s = s[:29]
-       }
-       return s
-}
-
 func (r *table_row) headings() string {
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s %6s|%8s %8s|%8s %6s %6s %6s",
-               "Table Name",
+       return fmt.Sprintf("%10s %6s|%6s %6s %6s|%8s %8s|%8s %6s %6s %6s|%s",
                "Latency",
                "%",
                "Read",
                "Ops",
                "R Ops",
                "W Ops",
-               "M Ops")
+               "M Ops",
+               "Table Name")
 }
 
 // generate a printable result
 func (row *table_row) row_content(totals table_row) string {
-       var name string = row.pretty_name()
+       var name string = row.name()
 
        // We assume that if COUNT_STAR = 0 then there's no data at all...
        // when we have no data we really don't want to show the name either.
                name = ""
        }
 
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s %6s|%8s %8s|%8s %6s %6s %6s",
-               name,
+       return fmt.Sprintf("%10s %6s|%6s %6s %6s|%8s %8s|%8s %6s %6s %6s|%s",
                lib.FormatTime(row.SUM_TIMER_WAIT),
                lib.FormatPct(lib.MyDivide(row.SUM_TIMER_WAIT, totals.SUM_TIMER_WAIT)),
                lib.FormatPct(lib.MyDivide(row.SUM_TIMER_READ, row.SUM_TIMER_WAIT)),
                lib.FormatAmount(row.COUNT_STAR),
                lib.FormatPct(lib.MyDivide(row.COUNT_READ, row.COUNT_STAR)),
                lib.FormatPct(lib.MyDivide(row.COUNT_WRITE, row.COUNT_STAR)),
-               lib.FormatPct(lib.MyDivide(row.COUNT_MISC, row.COUNT_STAR)))
+               lib.FormatPct(lib.MyDivide(row.COUNT_MISC, row.COUNT_STAR)),
+               name)
 }
 
 func (this *table_row) add(other table_row) {
 
        return n
 }
 
-func (r *table_row) pretty_name() string {
-       s := r.name()
-       if len(s) > 30 {
-               s = s[:29]
-       }
-       return s
-}
-
 func (r *table_row) latency_headings() string {
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s %6s %6s", "Table Name", "Latency", "%", "Fetch", "Insert", "Update", "Delete")
+       return fmt.Sprintf("%10s %6s|%6s %6s %6s %6s|%s", "Latency", "%", "Fetch", "Insert", "Update", "Delete", "Table Name")
 }
 func (r *table_row) ops_headings() string {
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s %6s %6s", "Table Name", "Ops", "%", "Fetch", "Insert", "Update", "Delete")
+       return fmt.Sprintf("%10s %6s|%6s %6s %6s %6s|%s", "Ops", "%", "Fetch", "Insert", "Update", "Delete", "Table Name")
 }
 
 // generate a printable result
 func (r *table_row) latency_row_content(totals table_row) string {
        // assume the data is empty so hide it.
-       name := r.pretty_name()
+       name := r.name()
        if r.COUNT_STAR == 0 && name != "Totals" {
                name = ""
        }
 
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s %6s %6s",
-               name,
+       return fmt.Sprintf("%10s %6s|%6s %6s %6s %6s|%s",
                lib.FormatTime(r.SUM_TIMER_WAIT),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WAIT, totals.SUM_TIMER_WAIT)),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_FETCH, r.SUM_TIMER_WAIT)),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_INSERT, r.SUM_TIMER_WAIT)),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_UPDATE, r.SUM_TIMER_WAIT)),
-               lib.FormatPct(lib.MyDivide(r.SUM_TIMER_DELETE, r.SUM_TIMER_WAIT)))
+               lib.FormatPct(lib.MyDivide(r.SUM_TIMER_DELETE, r.SUM_TIMER_WAIT)),
+               name)
 }
 
 // generate a printable result for ops
 func (r *table_row) ops_row_content(totals table_row) string {
        // assume the data is empty so hide it.
-       name := r.pretty_name()
+       name := r.name()
        if r.COUNT_STAR == 0 && name != "Totals" {
                name = ""
        }
 
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s %6s %6s",
-               name,
+       return fmt.Sprintf("%10s %6s|%6s %6s %6s %6s|%s",
                lib.FormatAmount(r.COUNT_STAR),
                lib.FormatPct(lib.MyDivide(r.COUNT_STAR, totals.COUNT_STAR)),
                lib.FormatPct(lib.MyDivide(r.COUNT_FETCH, r.COUNT_STAR)),
                lib.FormatPct(lib.MyDivide(r.COUNT_INSERT, r.COUNT_STAR)),
                lib.FormatPct(lib.MyDivide(r.COUNT_UPDATE, r.COUNT_STAR)),
-               lib.FormatPct(lib.MyDivide(r.COUNT_DELETE, r.COUNT_STAR)))
+               lib.FormatPct(lib.MyDivide(r.COUNT_DELETE, r.COUNT_STAR)),
+               name)
 }
 
 func (this *table_row) add(other table_row) {
 
 // describe a whole row
 func (r table_row) String() string {
-       return fmt.Sprintf("%-30s|%10s %10s %10s %10s %10s|%10s %10s|%10s %10s %10s %10s %10s|%10s %10s",
-               r.pretty_name(),
+       return fmt.Sprintf("%s|%10s %10s %10s %10s %10s|%10s %10s|%10s %10s %10s %10s %10s|%10s %10s",
+               r.name(),
                lib.FormatTime(r.SUM_TIMER_WAIT),
                lib.FormatTime(r.SUM_TIMER_FETCH),
                lib.FormatTime(r.SUM_TIMER_INSERT),
 
        return n
 }
 
-func (r *table_row) pretty_name() string {
-       s := r.name()
-       if len(s) > 30 {
-               s = s[:29]
-       }
-       return s
-}
-
-// Table Name                        Latency      %|  Read  Write|S.Lock   High  NoIns Normal Extrnl|AlloWr CncIns WrtDly    Low Normal Extrnl|
-// xxxxxxxxxxxxxxxxxxxxxxxxxxxxx  1234567890 100.0%|xxxxx% xxxxx%|xxxxx% xxxxx% xxxxx% xxxxx% xxxxx%|xxxxx% xxxxx% xxxxx% xxxxx% xxxxx% xxxxx%|
+// Latency      %|  Read  Write|S.Lock   High  NoIns Normal Extrnl|AlloWr CncIns WrtDly    Low Normal Extrnl|
+// 1234567 100.0%|xxxxx% xxxxx%|xxxxx% xxxxx% xxxxx% xxxxx% xxxxx%|xxxxx% xxxxx% xxxxx% xxxxx% xxxxx% xxxxx%|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 func (r *table_row) headings() string {
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s|%6s %6s %6s %6s %6s|%6s %6s %6s %6s %6s",
-               "Table Name", "Latency", "%",
+       return fmt.Sprintf("%10s %6s|%6s %6s|%6s %6s %6s %6s %6s|%6s %6s %6s %6s %6s|%-30s",
+               "Latency", "%",
                "Read", "Write",
                "S.Lock", "High", "NoIns", "Normal", "Extrnl",
-               "AlloWr", "CncIns", "Low", "Normal", "Extrnl")
+               "AlloWr", "CncIns", "Low", "Normal", "Extrnl",
+               "Table Name")
 }
 
 // generate a printable result
 func (r *table_row) row_content(totals table_row) string {
 
        // assume the data is empty so hide it.
-       name := r.pretty_name()
+       name := r.name()
        if r.COUNT_STAR == 0 && name != "Totals" {
                name = ""
        }
 
-       return fmt.Sprintf("%-30s %10s %6s|%6s %6s|%6s %6s %6s %6s %6s|%6s %6s %6s %6s %6s",
-               name,
+       return fmt.Sprintf("%10s %6s|%6s %6s|%6s %6s %6s %6s %6s|%6s %6s %6s %6s %6s|%s",
                lib.FormatTime(r.SUM_TIMER_WAIT),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WAIT, totals.SUM_TIMER_WAIT)),
 
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WRITE_CONCURRENT_INSERT, r.SUM_TIMER_WAIT)),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WRITE_LOW_PRIORITY, r.SUM_TIMER_WAIT)),
                lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WRITE_NORMAL, r.SUM_TIMER_WAIT)),
-               lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WRITE_EXTERNAL, r.SUM_TIMER_WAIT)))
+               lib.FormatPct(lib.MyDivide(r.SUM_TIMER_WRITE_EXTERNAL, r.SUM_TIMER_WAIT)),
+               name)
 }
 
 func (this *table_row) add(other table_row) {
 
 // describe a whole row
 func (r table_row) String() string {
-       return fmt.Sprintf("%-30s|%10s %10s %10s|%10s %10s %10s %10s %10s|%10s %10s %10s %10s %10s",
-               r.pretty_name(),
+       return fmt.Sprintf("%10s %10s %10s|%10s %10s %10s %10s %10s|%10s %10s %10s %10s %10s|%s",
                lib.FormatTime(r.SUM_TIMER_WAIT),
                lib.FormatTime(r.SUM_TIMER_READ),
                lib.FormatTime(r.SUM_TIMER_WRITE),
                lib.FormatTime(r.SUM_TIMER_WRITE_CONCURRENT_INSERT),
                lib.FormatTime(r.SUM_TIMER_WRITE_LOW_PRIORITY),
                lib.FormatTime(r.SUM_TIMER_WRITE_NORMAL),
-               lib.FormatTime(r.SUM_TIMER_WRITE_EXTERNAL))
+               lib.FormatTime(r.SUM_TIMER_WRITE_EXTERNAL),
+               r.name())
 }
 
 // describe a whole table