improve toString