basic functions has finished