prototype basic functions