exp_2, can be compiled, didn't test the correctness!