finally pass though all the basic function