more verbose toString method