generate toString