improve toString()