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