basic functions are finished.