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