formatting
performance TODO
dont throw, log!