basic functions have been completed