function put(table, key, value):
   load_factor = table.count / table.bucket_count

   if load_factor > 0.7:
      grow(table)         # rehash every entry into more buckets
   ... insert as before ...

 function grow(table):

   new_bucket_count = table.bucket_count * 2
   rehash every existing (key, value) into a table of new_bucket_count buckets
 # keeps average lookup close to O(1) as the table fills up
