improved toString() output formatting