generic pprint