fixed issue 1,2,3,5 by Ma