support for copy & deepcopy