developing basic functions