ooooooooo.    oooooo   oooooo     oooo        .o    ooooo      ooo  oooo                           
`888 `Y88. `888. `888. .8' .d88 `888b. `8' `888
888 .d88' `888. .8888. .8' .d'888 8 `88b. 8 888 .oo. ooo. .oo. .oo.
888ooo88P' `888 .8'`888. .8' .d' 888 8 `88b. 8 888P"Y88b `888P"Y88bP"Y88b
888 `888.8' `888.8' 88ooo888oo 8 `88b.8 888 888 888 888 888
888 `888' `888' 888 8 `888 888 888 888 888 888
o888o `8' `8' o888o o8o `8 o888o o888o o888o o888o o888o