all the basic functions done