much faster (2-3x) toString() implementation