remove reliance on __toString()