use deep copy for all members