The swap logic only work for main field