## ##      # #           ##    ##   ###  ##  ## 
 #  #       # #           ##   # #  #  #  #   #  
 ####    #  # #  ##      # #   ##  #      #   #  
 #  #   ### # # #  #    ####     # #      #   #  
 #  #  ##   # # #  #    #  #  #  # #  #   #   #  
## ##   ### # #  ##    ##  ##  ##   ###  ##  ##