.o.       oooooooooooo oooooooooo.    .oooooo.   ooooooooooooo 
     .888.      `888'     `8 `888'   `Y8b  d8P'  `Y8b  8'   888   `8 
    .8"888.      888          888     888 888      888      888      
   .8' `888.     888oooo8     888oooo888' 888      888      888      
  .88ooo8888.    888    "     888    `88b 888      888      888      
 .8'     `888.   888          888    .88P `88b    d88'      888      
o88o     o8888o o888o        o888bood8P'   `Y8bood8P'      o888o