basic functions completed