simplify compiler
enhance macro