modified toString