bug fixed
implement normal interface