oooooooooooo             o8o
  `888'     `8             `"'
   888         oo.ooooo.  oooo   .ooooo.  oooo    ooo  .ooooo.  ooo. .oo.
   888oooo8     888' `88b `888  d88' `"Y8  `88.  .8'  d88' `88b `888P"Y88b
   888    "     888   888  888  888         `88..8'   888   888  888   888
   888       o  888   888  888  888   .o8    `888'    888   888  888   888
  o888ooooood8  888bod8P' o888o `Y8bod8P'     .8'     `Y8bod8P' o888o o888o
                888                       .o..P'
               o888o                      `Y8P'