improved tostring