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