reduce marcro decode part