Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.cpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.cpp	(revision 2267)
@@ -6,8 +6,8 @@
 
 
-  void CAlgorithmTransformationReduce::computeAlgorithm(CLocalView* srcView, CLocalView* dstView)
+  void CAlgorithmTransformationReduce::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView)
  {
     this->computeRecvElement(srcView, dstView) ;
-    reduceTransformConnector_ = new  CReduceTransformConnector( recvElement_->getView(CElementView::FULL), dstView, operator_, transformationMapping_, detectMissingValue_) ; 
+    reduceTransformConnector_ = make_shared<CReduceTransformConnector>(recvElement_->getView(CElementView::FULL), dstView, operator_, transformationMapping_, detectMissingValue_) ; 
   }
  
@@ -18,5 +18,5 @@
   }
   
-  void CAlgorithmTransformationReduce::computeRecvElement(CLocalView* srcView, CLocalView* dstView)
+  void CAlgorithmTransformationReduce::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView)
   {
     auto& srcMap = transformationMapping_ ;
@@ -28,5 +28,5 @@
     int i=0 ;
     for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;}
-    recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;
+    recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;
     recvElement_->addFullView() ;
   }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.hpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_reduce.hpp	(revision 2267)
@@ -18,13 +18,13 @@
       virtual ~CAlgorithmTransformationReduce() {};
       virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut);
-      virtual void computeRecvElement(CLocalView* srcView, CLocalView* dstView) ;
+      virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ;
       
     protected:
-      virtual void computeAlgorithm(CLocalView* srcView, CLocalView* dstView) ;
+      virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ;
        
       //! Map between global index of destination element and source element
       EReduction operator_ ;
       TransformationIndexMap transformationMapping_;
-      CReduceTransformConnector* reduceTransformConnector_ ;
+      shared_ptr<CReduceTransformConnector> reduceTransformConnector_ ;
       bool detectMissingValue_=true ;
       bool eliminateRedondantSrc_ = true ; 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.cpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.cpp	(revision 2267)
@@ -8,8 +8,8 @@
 {
  
-  void CAlgorithmTransformationTransfer::computeAlgorithm(CLocalView* srcView, CLocalView* dstView)
+  void CAlgorithmTransformationTransfer::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView)
   {
    this->computeRecvElement(srcView, dstView) ;
-   transferTransformConnector_ = new  CTransferTransformConnector( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_) ; 
+   transferTransformConnector_ = make_shared<CTransferTransformConnector>( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_) ; 
   }
  
@@ -20,5 +20,5 @@
   }
   
-  void CAlgorithmTransformationTransfer::computeRecvElement(CLocalView* srcView, CLocalView* dstView)
+  void CAlgorithmTransformationTransfer::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView)
   {
     set<size_t> srcIndex ;
@@ -28,5 +28,5 @@
     int i=0 ;
     for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;}
-    recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;
+    recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;
     recvElement_->addFullView() ;
   }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.hpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_transfer.hpp	(revision 2267)
@@ -16,13 +16,13 @@
       virtual ~CAlgorithmTransformationTransfer() {};
       virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut);
-      virtual void computeRecvElement(CLocalView* srcView, CLocalView* dstView) ;
+      virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ;
       virtual StdString getAlgoName() {return "\\nCAlgorithm transformation Transfer";}
    
     protected:
-      virtual void computeAlgorithm(CLocalView* srcView, CLocalView* dstView) ;
+      virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ;
 
       //! Map between global index of destination element and source element
       unordered_map<int,int> transformationMapping_;
-      CTransferTransformConnector* transferTransformConnector_ ;
+      shared_ptr<CTransferTransformConnector> transferTransformConnector_ ;
   };
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.cpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.cpp	(revision 2267)
@@ -6,8 +6,8 @@
 
 
-  void CAlgorithmTransformationWeight::computeAlgorithm(CLocalView* srcView, CLocalView* dstView)
+  void CAlgorithmTransformationWeight::computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView)
   {
     this->computeRecvElement(srcView, dstView) ;
-    weightTransformConnector_ = new  CWeightTransformConnector( recvElement_->getView(CElementView::FULL), dstView, transformationMapping_, transformationWeight_) ; 
+    weightTransformConnector_ = make_shared<CWeightTransformConnector>(recvElement_->getView(CElementView::FULL), dstView, transformationMapping_, transformationWeight_) ; 
   }
  
@@ -18,5 +18,5 @@
   }
 
-  void CAlgorithmTransformationWeight::computeRecvElement(CLocalView* srcView, CLocalView* dstView)
+  void CAlgorithmTransformationWeight::computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView)
   {
     auto& srcMap = transformationMapping_ ;
@@ -28,5 +28,5 @@
     int i=0 ;
     for(size_t index : srcIndex) { srcArrayIndex(i) = index ; i++ ;}
-    recvElement_ = new CLocalElement(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;
+    recvElement_ = make_shared<CLocalElement>(CContext::getCurrent()->getIntraCommRank(), srcView->getGlobalSize(), srcArrayIndex) ;
     recvElement_->addFullView() ;
   }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.hpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/algorithm_transformation_weight.hpp	(revision 2267)
@@ -18,7 +18,7 @@
       virtual ~CAlgorithmTransformationWeight() {};
       virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut);
-      virtual void computeRecvElement(CLocalView* srcView, CLocalView* dstView);
+      virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView);
     protected:
-      virtual void computeAlgorithm(CLocalView* srcView, CLocalView* dstView) ;
+      virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ;
 
       //! Map between global index of destination element and source element
@@ -26,5 +26,5 @@
       //! Weight corresponding of source to destination
       TransformationWeightMap transformationWeight_;
-      CWeightTransformConnector* weightTransformConnector_ ;
+      shared_ptr<CWeightTransformConnector> weightTransformConnector_ ;
       
   };
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_interpolate_coordinate.cpp	(revision 2267)
@@ -106,7 +106,7 @@
     {
       CArray<double,1> coord ;
-      CLocalConnector destConnector(axisDest_->getLocalView(CElementView::FULL), axisDest_->getLocalView(CElementView::WORKFLOW)) ;
-      destConnector.computeConnector() ;
-      destConnector.transfer(axisDest_->value, coord) ;
+      auto destConnector = make_shared<CLocalConnector>(axisDest_->getLocalView(CElementView::FULL), axisDest_->getLocalView(CElementView::WORKFLOW)) ;
+      destConnector->computeConnector() ;
+      destConnector->transfer(axisDest_->value, coord) ;
       destCoordinate_ = vector<double>(coord.dataFirst(), coord.dataFirst()+nDest_) ;
     }
@@ -129,7 +129,7 @@
       CArray<double,1> coord ;
       CArray<double,1> coordGlo ;
-      CLocalConnector srcConnector(axisSrc_->getLocalView(CElementView::FULL), axisSrc_->getLocalView(CElementView::WORKFLOW)) ;
-      srcConnector.computeConnector() ;
-      srcConnector.transfer(axisSrc_->value, coord) ; // full view value -> workflow value
+      auto srcConnector = make_shared<CLocalConnector>(axisSrc_->getLocalView(CElementView::FULL), axisSrc_->getLocalView(CElementView::WORKFLOW)) ;
+      srcConnector->computeConnector() ;
+      srcConnector->transfer(axisSrc_->value, coord) ; // full view value -> workflow value
       transferTransformConnector_ -> transfer(coord, coordGlo) ; // workflow view -> full global view
       srcCoordinate_ = vector<double>(coordGlo.dataFirst(), coordGlo.dataFirst()+ngloSrc_) ;
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/generic_algorithm_transformation.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/generic_algorithm_transformation.hpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/generic_algorithm_transformation.hpp	(revision 2267)
@@ -48,9 +48,9 @@
     typedef std::unordered_map<int, std::vector<double> > TransformationWeightMap;
  
-    CLocalElement* recvElement_=nullptr ;
+    shared_ptr<CLocalElement> recvElement_ ;
     bool isSource_ ;
 
   public:
-    CLocalElement* getRecvElement(void) { return recvElement_ ;}
+    shared_ptr<CLocalElement> getRecvElement(void) { return recvElement_ ;}
   
 };
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.cpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.cpp	(revision 2267)
@@ -18,9 +18,9 @@
   void CGridAlgorithmGeneric::computeAlgorithm(void)
   {
-    CGridLocalElements* gridSrcElements = gridSrc_->getGridLocalElements() ;
-    CGridLocalElements* gridDstElements = gridDst_->getGridLocalElements() ;
+    shared_ptr<CGridLocalElements> gridSrcElements = gridSrc_->getGridLocalElements() ;
+    shared_ptr<CGridLocalElements> gridDstElements = gridDst_->getGridLocalElements() ;
     
-    CGridLocalView* srcView = gridSrcElements->getView(CElementView::WORKFLOW) ;
-    CGridLocalView* dstView = gridDstElements->getView(CElementView::WORKFLOW) ;
+    shared_ptr<CGridLocalView> srcView = gridSrcElements->getView(CElementView::WORKFLOW) ;
+    shared_ptr<CGridLocalView> dstView = gridDstElements->getView(CElementView::WORKFLOW) ;
     MPI_Comm comm = CContext::getCurrent()->getIntraComm() ;
     int commSize = CContext::getCurrent()->getIntraCommSize() ;
@@ -29,6 +29,6 @@
     auto& elements =  gridSrcElements->getElements() ;
     int nElements = elements.size() ;
-    vector<CLocalElement*> remoteElements(nElements) ;
-    vector<CLocalView*> remoteViews(nElements) ;
+    vector<shared_ptr<CLocalElement>> remoteElements(nElements) ;
+    vector<shared_ptr<CLocalView>> remoteViews(nElements) ;
     for(int i=0;i<nElements;i++)
     {
@@ -38,5 +38,5 @@
         CArray<size_t,1> globalIndexView ;
         srcView->getView(i)->getGlobalIndexView(globalIndexView) ;
-        remoteElements[i] = new CLocalElement(commRank, srcView->getView(i)->getGlobalSize(),globalIndexView) ;
+        remoteElements[i] = make_shared<CLocalElement>(commRank, srcView->getView(i)->getGlobalSize(),globalIndexView) ;
         remoteElements[i]->addFullView() ;
         if (i>pos_) dimBefore_ *= srcView->getView(i)->getSize() ;
@@ -47,5 +47,5 @@
     }
 
-    gridTransformConnector_ = new CGridTransformConnector(srcView->getViews(), remoteViews, comm ) ;
+    gridTransformConnector_ = make_shared<CGridTransformConnector>(srcView->getViews(), remoteViews, comm ) ;
  
   }
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.hpp	(revision 2257)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/grid_algorithm_generic.hpp	(revision 2267)
@@ -31,5 +31,5 @@
     
   protected:
-    CGridTransformConnector* gridTransformConnector_=nullptr ;
+    shared_ptr<CGridTransformConnector> gridTransformConnector_=nullptr ;
     CGrid* gridSrc_ = nullptr ;
     CGrid* gridDst_ = nullptr ;
