complement func added