rewrite toString