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