add reset function
change interface