add remove function and copy funcs
update test