at last complete all the function