llh
commit some
merge code with yj
merge..
merge code by llh