add basic funtion