lots of formatting stuff