further improved toString