modified toString()