revise deep copy