refactoring in StringContext macro
add swap macro