docs: def _rebuild_table(self, new_name, old_name, new_columns, old_columns): 
          
          ''' a helper method for rebuilding table (by renaming & migrating) '''
      
      # verbosity
          print('Rebuilding %s table in %s database' % (self.table_name, self.database_name), end='', flush=True)
          
          from sqlalchemy import Table, MetaData
          metadata_object = MetaData()
      
      # construct old table
          old_table_args = [ old_name, metadata_object ]
          old_column_args = self._construct_columns(old_columns)
          old_table_args.extend(old_column_args)
          old_table = Table(*old_table_args)
      
      # construct new table
          new_table_args = [ new_name, metadata_object ]
          new_column_args = self._construct_columns(new_columns)
          new_table_args.extend(new_column_args)
          new_table = Table(*new_table_args)
      
      # determine differences between tables
          add_columns, remove_columns, rename_columns, retype_columns, resize_columns = self._compare_columns(new_columns, old_columns)
          
      # rename table and recreate table if it doesn't already exist
          table_list = self.engine.table_names()
          if not old_name in table_list:
              self.engine.execute('ALTER TABLE %s RENAME TO %s' % (new_name, old_name))
              new_table.create(self.engine)
       
      # wait for renamed table to be responsive
                  
      # migrate records from old to new
          list_statement = old_table.select()
          count = 0
          for record in self.session.execute(list_statement).fetchall():
              create_kwargs = self._construct_inserts(record, new_columns, rename_columns, retype_columns, resize_columns)
              insert_statement = new_table.insert().values(**create_kwargs)
              self.session.execute(insert_statement)
              delete_statement = old_table.delete(old_table.c.id==record.id)
              self.session.execute(delete_statement)
              if not count % 10:
                  print('.', end='', flush=True)
              count += 1
          
      # drop old table
          record_list = self.session.execute(list_statement).first()
          if not record_list:
              self.session.close()
              old_table.drop(self.engine)
              self.session = self.engine.connect()
      
      # handle verbosity   
          print(' done.')
          
          return True