ooooooo ooooo oooooooooooo oooooooo ooooooooo. oooo oooo
`8888 d8' d'""""""d888' dP""""""" `888 `Y88. `888 .8P'
Y888..8P .888P d88888b. 888 .d88' 888 d8'
`8888' d888' `Y88b 888ooo88P' 88888[
.8PY888. .888P ]88 888`88b. 888`88b.
d8' `888b d888' .P o. .88P 888 `88b. 888 `88b.
o888o o88888o .8888888888P `8bd88P' o888o o888o o888o o888o