developing the basic functions