when as macro, some fix on String