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