.oooooo.       oooooo   oooo  ooooooooo.    ooooo         ooooooooo.        .ooo   
d8P' `Y8b `888. .8' `888 `Y88. `888' `888 `Y88. .88'
888 888 `888. .8' 888 .d88' 888 888 .d88' d88'
888 888 `888.8' 888ooo88P' 888 888ooo88P' d888P"Ybo.
888 888 `888' 888`88b. 888 888 Y88[ ]88
`88b d88b 888 888 `88b. 888 o 888 `Y88 88P
`Y8bood8P'Ybd' o888o o888o o888o o888ooooood8 o888o `88bod8'