add dup function