implemet add func