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