Recursive copy method