pretty and text and everything
merge upstream