def add_cell(self, key):
        if not key in self.cell_keys:
            self.cell_keys.insert(0, key)

            y = self.cell_height
            # if this is the first key
            if len(self.cell_keys) == 1:
                y = self.cell_height - 1

            ansi.write('\n' * y)
            ansi.move_horizontal(self.term_width)
    def display(self, msg):
        key, rows = self.render(msg)

        # add a row to our table
        self.add_cell(key)

        # display rows
        self.move_from_the_bottom_to(key)
        ansi.up(2)
        for i, row in enumerate(rows):
            ansi.move_horizontal(0)
            if i > 0:
                ansi.down(1)
            ansi.clear_line()
            ansi.write(row)
            ansi.move_horizontal(self.term_width)
        self.move_to_the_bottom_from(key)