updated copy()