a lot of formatting