add toString function