marked off implemented functions