complete basic functions