Issue#201 @cowwoc merged toString() changes (largely intact)