worked on toString()