to_s to avoid cyclic references and pretty print