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