add missing toString() implementation