updated all except additional copy function