From: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Date: Sun, 14 Jun 2020 11:26:46 +0200
Subject: Use PCL 1.11 API

---
 pcl/_pcl_180.pyx                                   |  1 -
 pcl/boost_shared_ptr.pxd                           | 35 ----------------------
 pcl/boost_shared_ptr_assign.h                      | 11 -------
 pcl/eigen.pxd                                      |  2 +-
 pcl/pcl_common.pxd                                 |  2 +-
 pcl/pcl_defs.pxd                                   |  2 +-
 pcl/pcl_features.pxd                               |  2 +-
 pcl/pcl_features_172.pxd                           |  2 +-
 pcl/pcl_features_180.pxd                           |  2 +-
 pcl/pcl_filters.pxd                                |  2 +-
 pcl/pcl_filters_180.pxd                            |  2 +-
 pcl/pcl_io_172.pxd                                 |  2 +-
 pcl/pcl_kdtree.pxd                                 |  2 +-
 pcl/pcl_kdtree_172.pxd                             |  2 +-
 pcl/pcl_kdtree_180.pxd                             |  2 +-
 pcl/pcl_keypoints_180.pxd                          |  4 +--
 pcl/pcl_octree_180.pxd                             |  2 +-
 pcl/pcl_range_image.pxd                            |  2 +-
 pcl/pcl_range_image_172.pxd                        |  2 +-
 pcl/pcl_range_image_180.pxd                        |  2 +-
 pcl/pcl_registration_180.pxd                       |  2 +-
 pcl/pcl_sample_consensus.pxd                       |  2 +-
 pcl/pcl_sample_consensus_180.pxd                   |  2 +-
 pcl/pcl_segmentation_180.pxd                       |  2 +-
 pcl/pcl_surface_180.pxd                            |  6 ++--
 pcl/pcl_visualization.pyx                          |  1 -
 pcl/pcl_visualization_defs.pxd                     |  2 +-
 pcl/pxi/Common/RangeImage/RangeImages_180.pxi      |  5 ++--
 .../Features/IntegralImageNormalEstimation_180.pxi |  5 ++--
 pcl/pxi/Features/NormalEstimation_180.pxi          |  4 +--
 pcl/pxi/Filters/ConditionAnd_180.pxi               |  5 ++--
 pcl/pxi/Filters/ConditionalRemoval_180.pxi         |  2 +-
 pcl/pxi/Filters/CropBox_180.pxi                    |  2 +-
 pcl/pxi/Filters/CropHull_180.pxi                   |  2 +-
 pcl/pxi/KeyPoint/HarrisKeypoint3D_180.pxi          |  4 +--
 pcl/pxi/PointCloud_Normal.pxi                      |  5 ++--
 pcl/pxi/PointCloud_PointNormal.pxi                 |  5 ++--
 pcl/pxi/PointCloud_PointWithViewpoint.pxi          |  5 ++--
 pcl/pxi/PointCloud_PointXYZI_180.pxi               |  5 ++--
 pcl/pxi/PointCloud_PointXYZRGBA_180.pxi            |  5 ++--
 pcl/pxi/PointCloud_PointXYZRGB_180.pxi             |  5 ++--
 pcl/pxi/PointCloud_PointXYZ_180.pxi                | 11 ++++---
 .../SampleConsensusModelCylinder.pxi               |  2 +-
 .../SampleConsensus/SampleConsensusModelLine.pxi   |  2 +-
 .../SampleConsensus/SampleConsensusModelPlane.pxi  |  2 +-
 .../SampleConsensusModelRegistration.pxi           |  2 +-
 .../SampleConsensus/SampleConsensusModelSphere.pxi |  5 ++--
 .../SampleConsensus/SampleConsensusModelStick.pxi  |  2 +-
 pcl/pxi/Surface/MovingLeastSquares_180.pxi         |  8 ++---
 pcl/pxi/Vertices.pxi                               |  4 +--
 pcl/pxi/Visualization/CloudViewing.pxi             |  5 ++--
 .../Handler/PointCloudColorHandleringCustom.pxi    |  5 ++--
 .../PointCloudColorHandleringGenericField.pxi      |  1 -
 .../Handler/PointCloudColorHandleringHSVField.pxi  |  1 -
 .../Handler/PointCloudColorHandleringRGBField.pxi  |  1 -
 .../Handler/PointCloudColorHandleringRandom.pxi    |  1 -
 .../Handler/PointCloudGeometryHandleringCustom.pxi |  1 -
 .../PointCloudGeometryHandleringSurfaceNormal.pxi  |  1 -
 .../Handler/PointCloudGeometryHandleringXYZ.pxi    |  1 -
 pcl/pxi/Visualization/PCLHistogramViewing.pxi      |  3 +-
 pcl/pxi/Visualization/PCLVisualizering.pxi         |  5 ++--
 .../GeneralizedIterativeClosestPoint_180.pxi       |  4 +--
 .../IterativeClosestPointNonLinear_180.pxi         |  4 +--
 pcl/pxi/registration/IterativeClosestPoint_180.pxi |  4 +--
 pcl/shared_ptr.pxd                                 | 18 -----------
 pcl/shared_ptr_assign.h                            | 11 -------
 setup.py                                           |  8 ++---
 67 files changed, 84 insertions(+), 187 deletions(-)
 delete mode 100644 pcl/boost_shared_ptr.pxd
 delete mode 100644 pcl/boost_shared_ptr_assign.h
 delete mode 100644 pcl/shared_ptr.pxd
 delete mode 100644 pcl/shared_ptr_assign.h

diff --git a/pcl/_pcl_180.pyx b/pcl/_pcl_180.pyx
index f83eb3c..0d23245 100644
--- a/pcl/_pcl_180.pyx
+++ b/pcl/_pcl_180.pyx
@@ -28,7 +28,6 @@ from libcpp.vector cimport vector
 
 # cimport pcl_segmentation as pclseg
 
-from boost_shared_ptr cimport sp_assign
 
 cnp.import_array()
 
diff --git a/pcl/boost_shared_ptr.pxd b/pcl/boost_shared_ptr.pxd
deleted file mode 100644
index acf55f6..0000000
--- a/pcl/boost_shared_ptr.pxd
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- coding: utf-8 -*-
-cimport pcl_defs as cpp
-from libcpp cimport bool
-
-###############################################################################
-# Types
-###############################################################################
-
-# cdef extern from "boost/smart_ptr/shared_ptr.hpp" namespace "boost" nogil:
-cdef extern from "boost/shared_ptr.hpp" namespace "boost" nogil:
-    cdef cppclass shared_ptr[T]:
-        shared_ptr()
-        shared_ptr(T*)
-        # shared_ptr(T*, T*)
-        # shared_ptr(T*, T*, T*)
-        # shared_ptr(weak_ptr[T])
-        # shared_ptr(weak_ptr[T], boost::detail::sp_nothrow_tag)
-        
-        T* get()
-        bool unique()
-        long use_count()
-        void swap(shared_ptr[T])
-        void reset(T*)
-
-cdef extern from "boost_shared_ptr_assign.h" nogil:
-     # void sp_assign(shared_ptr[cpp.PointCloud[cpp.PointXYZ]] &t, cpp.PointCloud[cpp.PointXYZ] *value)
-     void sp_assign[T](shared_ptr[T] &p, T *value)
-
-###############################################################################
-# Enum
-###############################################################################
-
-###############################################################################
-# Activation
-###############################################################################
diff --git a/pcl/boost_shared_ptr_assign.h b/pcl/boost_shared_ptr_assign.h
deleted file mode 100644
index 0150fb3..0000000
--- a/pcl/boost_shared_ptr_assign.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <pcl/point_cloud.h>
-#include <pcl/point_types.h>
-
-namespace {
-    // Workaround for lack of operator= support in Cython.
-    template <typename T>
-    void sp_assign(boost::shared_ptr<T> &p, T *v)
-    {
-        p = boost::shared_ptr<T>(v);
-    }
-}
diff --git a/pcl/eigen.pxd b/pcl/eigen.pxd
index 95344e7..4ee9a7f 100644
--- a/pcl/eigen.pxd
+++ b/pcl/eigen.pxd
@@ -6,7 +6,7 @@ from libcpp.string cimport string
 from libcpp cimport bool
 
 cimport pcl_defs as cpp
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 from vector cimport vector as vector2
 
 # Cython C++ wrapper operator() overloading error
diff --git a/pcl/pcl_common.pxd b/pcl/pcl_common.pxd
index a79a55f..d6b343c 100644
--- a/pcl/pcl_common.pxd
+++ b/pcl/pcl_common.pxd
@@ -11,7 +11,7 @@ from libcpp.vector cimport vector
 
 cimport eigen as eigen3
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 
 # common/angles.h
diff --git a/pcl/pcl_defs.pxd b/pcl/pcl_defs.pxd
index 1117ee6..38b88e3 100644
--- a/pcl/pcl_defs.pxd
+++ b/pcl/pcl_defs.pxd
@@ -5,7 +5,7 @@ from libcpp.vector cimport vector
 from libcpp.string cimport string
 from libcpp cimport bool
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 # Eigen
 from eigen cimport Vector4f
diff --git a/pcl/pcl_features.pxd b/pcl/pcl_features.pxd
index 3dfae25..51a12d6 100644
--- a/pcl/pcl_features.pxd
+++ b/pcl/pcl_features.pxd
@@ -6,7 +6,7 @@ from libcpp.vector cimport vector
 from libcpp.string cimport string
 from libcpp cimport bool
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_features_172.pxd b/pcl/pcl_features_172.pxd
index 3991b15..a39ecac 100644
--- a/pcl/pcl_features_172.pxd
+++ b/pcl/pcl_features_172.pxd
@@ -6,7 +6,7 @@ from libcpp.vector cimport vector
 from libcpp.string cimport string
 from libcpp cimport bool
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_features_180.pxd b/pcl/pcl_features_180.pxd
index a3351a4..02df12a 100644
--- a/pcl/pcl_features_180.pxd
+++ b/pcl/pcl_features_180.pxd
@@ -6,7 +6,7 @@ from libcpp.vector cimport vector
 from libcpp.string cimport string
 from libcpp cimport bool
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_filters.pxd b/pcl/pcl_filters.pxd
index 6638b9b..672343e 100644
--- a/pcl/pcl_filters.pxd
+++ b/pcl/pcl_filters.pxd
@@ -7,7 +7,7 @@ from libcpp.pair cimport pair
 
 # import
 cimport pcl_defs as cpp
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_filters_180.pxd b/pcl/pcl_filters_180.pxd
index cb6f075..0851b17 100644
--- a/pcl/pcl_filters_180.pxd
+++ b/pcl/pcl_filters_180.pxd
@@ -7,7 +7,7 @@ from libcpp.pair cimport pair
 
 # import
 cimport pcl_defs as cpp
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_io_172.pxd b/pcl/pcl_io_172.pxd
index 6266fe8..7cd813b 100644
--- a/pcl/pcl_io_172.pxd
+++ b/pcl/pcl_io_172.pxd
@@ -7,7 +7,7 @@ from libcpp.vector cimport vector
 # main
 cimport pcl_defs as cpp
 
-# from boost_shared_ptr cimport shared_ptr
+# from libcpp.memory cimport shared_ptr
 
 cdef extern from "pcl/io/pcd_io.h" namespace "pcl::io":
     # XYZ
diff --git a/pcl/pcl_kdtree.pxd b/pcl/pcl_kdtree.pxd
index 21bf1f8..1f86775 100644
--- a/pcl/pcl_kdtree.pxd
+++ b/pcl/pcl_kdtree.pxd
@@ -4,7 +4,7 @@ from libcpp.vector cimport vector
 # main
 cimport pcl_defs as cpp
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 # flann.h
 ###
diff --git a/pcl/pcl_kdtree_172.pxd b/pcl/pcl_kdtree_172.pxd
index f7d4ae0..10ba728 100644
--- a/pcl/pcl_kdtree_172.pxd
+++ b/pcl/pcl_kdtree_172.pxd
@@ -4,7 +4,7 @@ from libcpp.vector cimport vector
 # main
 cimport pcl_defs as cpp
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 # flann.h
 ###
diff --git a/pcl/pcl_kdtree_180.pxd b/pcl/pcl_kdtree_180.pxd
index f7d4ae0..10ba728 100644
--- a/pcl/pcl_kdtree_180.pxd
+++ b/pcl/pcl_kdtree_180.pxd
@@ -4,7 +4,7 @@ from libcpp.vector cimport vector
 # main
 cimport pcl_defs as cpp
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 # flann.h
 ###
diff --git a/pcl/pcl_keypoints_180.pxd b/pcl/pcl_keypoints_180.pxd
index ac852e4..a817fab 100644
--- a/pcl/pcl_keypoints_180.pxd
+++ b/pcl/pcl_keypoints_180.pxd
@@ -12,7 +12,7 @@ cimport pcl_features_172 as pclftr
 cimport pcl_kdtree_172 as pclkdt
 
 # boost
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 ###############################################################################
 # Types
@@ -307,7 +307,7 @@ cdef extern from "pcl/keypoints/smoothed_surfaces_keypoint.h" namespace "pcl":
 # uniform_sampling.h
 # template <typename PointInT>
 # class UniformSampling: public Keypoint<PointInT, int>
-cdef extern from "pcl/keypoints/uniform_sampling.h" namespace "pcl":
+cdef extern from "pcl/filters/uniform_sampling.h" namespace "pcl":
     cdef cppclass UniformSampling[In](Keypoint[In, int]):
         UniformSampling ()
         # public:
diff --git a/pcl/pcl_octree_180.pxd b/pcl/pcl_octree_180.pxd
index 9223fb9..12e06b9 100644
--- a/pcl/pcl_octree_180.pxd
+++ b/pcl/pcl_octree_180.pxd
@@ -4,7 +4,7 @@ from libcpp.vector cimport vector
 
 # main
 cimport pcl_defs as cpp
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eig
 from vector cimport vector as vector2
diff --git a/pcl/pcl_range_image.pxd b/pcl/pcl_range_image.pxd
index 0adea84..3660129 100644
--- a/pcl/pcl_range_image.pxd
+++ b/pcl/pcl_range_image.pxd
@@ -9,7 +9,7 @@ from libcpp cimport bool
 cimport pcl_defs as cpp
 
 # boost
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_range_image_172.pxd b/pcl/pcl_range_image_172.pxd
index 2e4f64e..02ab9c9 100644
--- a/pcl/pcl_range_image_172.pxd
+++ b/pcl/pcl_range_image_172.pxd
@@ -9,7 +9,7 @@ from libcpp cimport bool
 cimport pcl_defs as cpp
 
 # boost
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_range_image_180.pxd b/pcl/pcl_range_image_180.pxd
index 5d63fa5..3954546 100644
--- a/pcl/pcl_range_image_180.pxd
+++ b/pcl/pcl_range_image_180.pxd
@@ -9,7 +9,7 @@ from libcpp cimport bool
 cimport pcl_defs as cpp
 
 # boost
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cimport eigen as eigen3
 
diff --git a/pcl/pcl_registration_180.pxd b/pcl/pcl_registration_180.pxd
index 0c5af34..3296990 100644
--- a/pcl/pcl_registration_180.pxd
+++ b/pcl/pcl_registration_180.pxd
@@ -7,7 +7,7 @@ from libcpp.pair cimport pair
 
 # main
 cimport pcl_defs as cpp
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 # base
 from eigen cimport Matrix4f
diff --git a/pcl/pcl_sample_consensus.pxd b/pcl/pcl_sample_consensus.pxd
index d51445b..f2c8322 100644
--- a/pcl/pcl_sample_consensus.pxd
+++ b/pcl/pcl_sample_consensus.pxd
@@ -6,7 +6,7 @@ from libcpp cimport bool
 
 # import
 cimport pcl_defs as cpp
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 ###############################################################################
 # Types
diff --git a/pcl/pcl_sample_consensus_180.pxd b/pcl/pcl_sample_consensus_180.pxd
index 601262d..25c11e3 100644
--- a/pcl/pcl_sample_consensus_180.pxd
+++ b/pcl/pcl_sample_consensus_180.pxd
@@ -6,7 +6,7 @@ from libcpp cimport bool
 
 # import
 cimport pcl_defs as cpp
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 ###############################################################################
 # Types
diff --git a/pcl/pcl_segmentation_180.pxd b/pcl/pcl_segmentation_180.pxd
index c5e1846..549a5e3 100644
--- a/pcl/pcl_segmentation_180.pxd
+++ b/pcl/pcl_segmentation_180.pxd
@@ -6,7 +6,7 @@ from libcpp.vector cimport vector
 from libcpp.string cimport string
 from libcpp cimport bool
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 # main
 # cimport pcl_defs as cpp
diff --git a/pcl/pcl_surface_180.pxd b/pcl/pcl_surface_180.pxd
index 41a2021..fe2e345 100644
--- a/pcl/pcl_surface_180.pxd
+++ b/pcl/pcl_surface_180.pxd
@@ -6,7 +6,7 @@ from libcpp.vector cimport vector
 # main
 cimport pcl_defs as cpp
 cimport pcl_kdtree as pclkdt
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 ###############################################################################
 # Types
@@ -2228,7 +2228,7 @@ cdef extern from "pcl/surface/mls.h" namespace "pcl":
         void setSearchRadius (double)
         void setComputeNormals (bool compute_normals)
         void setPolynomialOrder(bool)
-        void setPolynomialFit(int)
+        void setPolynomialOrder(int)
         # void process(cpp.PointCloud[O] &) except +
         void process(cpp.PointCloud[O] &) except +
         
@@ -2343,7 +2343,7 @@ ctypedef MovingLeastSquares[cpp.PointXYZRGBA, cpp.PointXYZRGBA] MovingLeastSquar
 #         * \param[in] polynomial_fit set to true for polynomial fit
 #         */
 #       inline void 
-#       setPolynomialFit (bool polynomial_fit) { polynomial_fit_ = polynomial_fit; }
+#       setPolynomialOrder (bool polynomial_fit) { polynomial_fit_ = polynomial_fit; }
 # 
 #       /** \brief Get the polynomial_fit value (true if the surface and normal are approximated using a polynomial). */
 #       inline bool 
diff --git a/pcl/pcl_visualization.pyx b/pcl/pcl_visualization.pyx
index 13634a6..820bd40 100644
--- a/pcl/pcl_visualization.pyx
+++ b/pcl/pcl_visualization.pyx
@@ -20,7 +20,6 @@ from libcpp.string cimport string
 from libcpp cimport bool
 from libcpp.vector cimport vector
 
-from boost_shared_ptr cimport sp_assign
 
 cnp.import_array()
 
diff --git a/pcl/pcl_visualization_defs.pxd b/pcl/pcl_visualization_defs.pxd
index 8b55e97..f264817 100644
--- a/pcl/pcl_visualization_defs.pxd
+++ b/pcl/pcl_visualization_defs.pxd
@@ -13,7 +13,7 @@ from pcl_range_image cimport RangeImage
 cimport eigen as eigen3
 
 # boost
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 ###############################################################################
 # Types
diff --git a/pcl/pxi/Common/RangeImage/RangeImages_180.pxi b/pcl/pxi/Common/RangeImage/RangeImages_180.pxi
index e45fec4..10e8dec 100644
--- a/pcl/pxi/Common/RangeImage/RangeImages_180.pxi
+++ b/pcl/pxi/Common/RangeImage/RangeImages_180.pxi
@@ -5,7 +5,6 @@ cimport pcl_defs as cpp
 cimport pcl_range_image_180 as pcl_r_img
 
 cimport eigen as eigen3
-from boost_shared_ptr cimport sp_assign
 
 from cython.operator cimport dereference as deref, preincrement as inc
 
@@ -16,13 +15,13 @@ cdef class RangeImages:
     def __cinit__(self):
         # self.me = new pcl_r_img.RangeImage_t()
         # NG : Compiler crash
-        # sp_assign(self.thisptr_shared, new pcl_r_img.RangeImage_t())
+        # self.thisptr_shared.reset(new pcl_r_img.RangeImage_t())
         pass
 
     # def __cinit__(self, PointCloud pc not None):
     #     # self.me = new pcl_r_img.RangeImage_t()
     #     # self.point = pc.thisptr_shared
-    #     # sp_assign(self.thisptr_shared,  new pcl_r_img.RangeImage_t())
+    #     # self.thisptr_shared.reset( new pcl_r_img.RangeImage_t())
     #     # self.thisptr().setInputCloud(pc.thisptr_shared)
     #     pass
 
diff --git a/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi b/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi
index 7d02326..477b179 100644
--- a/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi
+++ b/pcl/pxi/Features/IntegralImageNormalEstimation_180.pxi
@@ -6,7 +6,6 @@ from libcpp cimport bool
 cimport pcl_defs as cpp
 cimport pcl_features_180 as pclftr
 
-from boost_shared_ptr cimport sp_assign
 
 cdef extern from "minipcl.h":
     void mpcl_features_NormalEstimationMethod_AVERAGE_3D_GRADIENT(pclftr.IntegralImageNormalEstimation_t ) except +
@@ -24,7 +23,7 @@ cdef class IntegralImageNormalEstimation:
 
 
     def __cinit__(self, _pcl.PointCloud pc not None):
-        # sp_assign(self.thisptr_shared, new pclftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]())
+        # self.thisptr_shared.reset(new pclftr.IntegralImageNormalEstimation[cpp.PointXYZ, cpp.Normal]())
         # self.thisptr().setInputCloud(pc.thisptr_shared)
         # NG : Reference Count 
         self.me = new pclftr.IntegralImageNormalEstimation_t()
@@ -73,7 +72,7 @@ cdef class IntegralImageNormalEstimation:
 
     def compute(self):
         normal = PointCloud_Normal()
-        sp_assign(normal.thisptr_shared, new cpp.PointCloud[cpp.Normal]())
+        normal.thisptr_shared.reset(new cpp.PointCloud[cpp.Normal]())
         cdef cpp.PointCloud_Normal_t *cNormal = <cpp.PointCloud_Normal_t*>normal.thisptr()
         # (<pclftr.Feature_t*>self.thisptr()).compute(deref(cNormal))
         (<pclftr.Feature_t*>self.me).compute(deref(cNormal))
diff --git a/pcl/pxi/Features/NormalEstimation_180.pxi b/pcl/pxi/Features/NormalEstimation_180.pxi
index 67256d9..673a45a 100644
--- a/pcl/pxi/Features/NormalEstimation_180.pxi
+++ b/pcl/pxi/Features/NormalEstimation_180.pxi
@@ -15,7 +15,7 @@ cdef class NormalEstimation:
 
     def __cinit__(self):
         self.me = new pclftr.NormalEstimation_t()
-        # sp_assign(self.thisptr_shared, new pclftr.NormalEstimation[cpp.PointXYZ, cpp.Normal]())
+        # self.thisptr_shared.reset(new pclftr.NormalEstimation[cpp.PointXYZ, cpp.Normal]())
 
     def __dealloc__(self):
         del self.me
@@ -31,7 +31,7 @@ cdef class NormalEstimation:
 
     def compute(self):
         normals = PointCloud_Normal()
-        sp_assign(normals.thisptr_shared, new cpp.PointCloud[cpp.Normal]())
+        normals.thisptr_shared.reset(new cpp.PointCloud[cpp.Normal]())
         cdef cpp.PointCloud_Normal_t *cNormal = <cpp.PointCloud_Normal_t*>normals.thisptr()
         (<pclftr.Feature_t*>self.me).compute(deref(cNormal))
         return normals
diff --git a/pcl/pxi/Filters/ConditionAnd_180.pxi b/pcl/pxi/Filters/ConditionAnd_180.pxi
index e08c2a8..508aec6 100644
--- a/pcl/pxi/Filters/ConditionAnd_180.pxi
+++ b/pcl/pxi/Filters/ConditionAnd_180.pxi
@@ -7,8 +7,7 @@ cimport pcl_defs as cpp
 cimport pcl_filters_180 as pclfil
 
 from pcl_filters cimport CompareOp2
-from boost_shared_ptr cimport shared_ptr
-from boost_shared_ptr cimport sp_assign
+from libcpp.memory cimport shared_ptr
 
 # cdef class ConditionAnd(ConditionBase):
 cdef class ConditionAnd:
@@ -43,6 +42,6 @@ cdef class ConditionAnd:
         self.me.addComparison(<shared_ptr[const pclfil.ComparisonBase[cpp.PointXYZ]]> fieldComp)
         
         # NG
-        # sp_assign( self.fieldCompPtr, new pclfil.FieldComparison_t(string(fname_ascii), compOp, thresh) )
+        #  self.fieldCompPtr.reset(new pclfil.FieldComparison_t(string(fname_ascii), compOp, thresh) )
         # self.me.addComparison(<shared_ptr[const pclfil.ComparisonBase[cpp.PointXYZ]]> self.fieldCompPtr)
 
diff --git a/pcl/pxi/Filters/ConditionalRemoval_180.pxi b/pcl/pxi/Filters/ConditionalRemoval_180.pxi
index 5e25b37..52e3cb5 100644
--- a/pcl/pxi/Filters/ConditionalRemoval_180.pxi
+++ b/pcl/pxi/Filters/ConditionalRemoval_180.pxi
@@ -7,7 +7,7 @@ cimport pcl_filters_180 as pclfil
 
 cimport eigen as eigen3
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cdef class ConditionalRemoval:
     """
diff --git a/pcl/pxi/Filters/CropBox_180.pxi b/pcl/pxi/Filters/CropBox_180.pxi
index ddea64c..597b1df 100644
--- a/pcl/pxi/Filters/CropBox_180.pxi
+++ b/pcl/pxi/Filters/CropBox_180.pxi
@@ -7,7 +7,7 @@ cimport pcl_filters_180 as pclfil
 
 cimport eigen as eigen3
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cdef class CropBox:
     """
diff --git a/pcl/pxi/Filters/CropHull_180.pxi b/pcl/pxi/Filters/CropHull_180.pxi
index daed068..863c9de 100644
--- a/pcl/pxi/Filters/CropHull_180.pxi
+++ b/pcl/pxi/Filters/CropHull_180.pxi
@@ -5,7 +5,7 @@ from libcpp cimport bool
 cimport pcl_defs as cpp
 cimport pcl_filters_180 as pclfil
 
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 cdef class CropHull:
     """
diff --git a/pcl/pxi/KeyPoint/HarrisKeypoint3D_180.pxi b/pcl/pxi/KeyPoint/HarrisKeypoint3D_180.pxi
index 8fdaf5f..8b1414a 100644
--- a/pcl/pxi/KeyPoint/HarrisKeypoint3D_180.pxi
+++ b/pcl/pxi/KeyPoint/HarrisKeypoint3D_180.pxi
@@ -10,7 +10,7 @@ cimport pcl_defs as cpp
 cimport pcl_keypoints_180 as keypt
 
 # boost
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 
 ###############################################################################
@@ -44,7 +44,7 @@ cdef class HarrisKeypoint3D:
 
     def compute(self):
         keypoints = PointCloud_PointXYZI()
-        sp_assign(keypoints.thisptr_shared, new cpp.PointCloud[cpp.PointXYZI]())
+        keypoints.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZI]())
         cdef cpp.PointCloud_PointXYZI_t *ckeypoints = <cpp.PointCloud_PointXYZI_t*>keypoints.thisptr()
         self.me.compute (<cpp.PointCloud[cpp.PointXYZI]&> deref(ckeypoints))
         return keypoints
diff --git a/pcl/pxi/PointCloud_Normal.pxi b/pcl/pxi/PointCloud_Normal.pxi
index 010f89a..2e71cca 100644
--- a/pcl/pxi/PointCloud_Normal.pxi
+++ b/pcl/pxi/PointCloud_Normal.pxi
@@ -7,7 +7,6 @@ cnp.import_array()
 
 from libcpp cimport bool
 cimport indexing as idx
-from boost_shared_ptr cimport sp_assign
 from _pcl cimport PointCloud_Normal
 
 cdef class PointCloud_Normal:
@@ -24,8 +23,8 @@ cdef class PointCloud_Normal:
         self._view_count = 0
         
         # TODO: NG --> import pcl --> pyd Error(python shapedptr/C++ shard ptr collusion?)
-        # sp_assign(<cpp.shared_ptr[cpp.PointCloud[cpp.Normal]]> self.thisptr_shared, new cpp.PointCloud[cpp.Normal]())
-        sp_assign(self.thisptr_shared, new cpp.PointCloud[cpp.Normal]())
+        # <cpp.shared_ptr[cpp.PointCloud[cpp.Normal]]> self.thisptr_shared.reset(new cpp.PointCloud[cpp.Normal]())
+        self.thisptr_shared.reset(new cpp.PointCloud[cpp.Normal]())
         
         if init is None:
             return
diff --git a/pcl/pxi/PointCloud_PointNormal.pxi b/pcl/pxi/PointCloud_PointNormal.pxi
index 4a31cca..5ee36b5 100644
--- a/pcl/pxi/PointCloud_PointNormal.pxi
+++ b/pcl/pxi/PointCloud_PointNormal.pxi
@@ -7,7 +7,6 @@ cnp.import_array()
 
 from libcpp cimport bool
 cimport indexing as idx
-from boost_shared_ptr cimport sp_assign
 from _pcl cimport PointCloud_PointNormal
 
 cdef class PointCloud_PointNormal:
@@ -24,8 +23,8 @@ cdef class PointCloud_PointNormal:
         self._view_count = 0
         
         # TODO: NG --> import pcl --> pyd Error(python shapedptr/C++ shard ptr collusion?)
-        # sp_assign(<cpp.shared_ptr[cpp.PointCloud[cpp.PointNormal]]> self.thisptr_shared, new cpp.PointCloud[cpp.PointNormal]())
-        sp_assign(self.thisptr_shared, new cpp.PointCloud[cpp.PointNormal]())
+        # <cpp.shared_ptr[cpp.PointCloud[cpp.PointNormal]]> self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointNormal]())
+        self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointNormal]())
         
         if init is None:
             return
diff --git a/pcl/pxi/PointCloud_PointWithViewpoint.pxi b/pcl/pxi/PointCloud_PointWithViewpoint.pxi
index 25f4ff3..d1e46f8 100644
--- a/pcl/pxi/PointCloud_PointWithViewpoint.pxi
+++ b/pcl/pxi/PointCloud_PointWithViewpoint.pxi
@@ -4,7 +4,6 @@ cimport pcl_io as pclio
 
 from libcpp cimport bool
 cimport indexing as idx
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloud_PointWithViewpoint:
     """
@@ -20,8 +19,8 @@ cdef class PointCloud_PointWithViewpoint:
         self._view_count = 0
         
         # TODO: NG --> import pcl --> pyd Error(python shapedptr/C++ shard ptr collusion?)
-        # sp_assign(<cpp.shared_ptr[cpp.PointCloud[cpp.PointWithViewpoint]]> self.thisptr_shared, new cpp.PointCloud[cpp.PointWithViewpoint]())
-        # sp_assign(self.thisptr_shared, new cpp.PointCloud[cpp.PointWithViewpoint]())
+        # <cpp.shared_ptr[cpp.PointCloud[cpp.PointWithViewpoint]]> self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointWithViewpoint]())
+        # self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointWithViewpoint]())
         
         if init is None:
             return
diff --git a/pcl/pxi/PointCloud_PointXYZI_180.pxi b/pcl/pxi/PointCloud_PointXYZI_180.pxi
index 1d14eb8..628636d 100644
--- a/pcl/pxi/PointCloud_PointXYZI_180.pxi
+++ b/pcl/pxi/PointCloud_PointXYZI_180.pxi
@@ -18,7 +18,6 @@ cimport pcl_surface_180 as pclsf
 
 from libcpp cimport bool
 cimport indexing as idx
-from boost_shared_ptr cimport sp_assign
 from _pcl cimport PointCloud_PointXYZI
 
 cdef extern from "minipcl.h":
@@ -57,8 +56,8 @@ cdef class PointCloud_PointXYZI:
         self._view_count = 0
         
         # TODO: NG --> import pcl --> pyd Error(python shapedptr/C++ shard ptr collusion?)
-        # sp_assign(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZI]]> self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZI]())
-        sp_assign(self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZI]())
+        # <cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZI]]> self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZI]())
+        self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZI]())
         
         if init is None:
             return
diff --git a/pcl/pxi/PointCloud_PointXYZRGBA_180.pxi b/pcl/pxi/PointCloud_PointXYZRGBA_180.pxi
index 4cf1530..17edf4b 100644
--- a/pcl/pxi/PointCloud_PointXYZRGBA_180.pxi
+++ b/pcl/pxi/PointCloud_PointXYZRGBA_180.pxi
@@ -18,7 +18,6 @@ cimport pcl_surface_180 as pclsf
 
 from libcpp cimport bool
 cimport indexing as idx
-from boost_shared_ptr cimport sp_assign
 from _pcl cimport PointCloud_PointXYZRGBA
 
 cdef extern from "minipcl.h":
@@ -56,8 +55,8 @@ cdef class PointCloud_PointXYZRGBA:
 
         self._view_count = 0
 
-        # sp_assign(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZRGBA]]> self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZRGBA]())
-        sp_assign(self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZRGBA]())
+        # <cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZRGBA]]> self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZRGBA]())
+        self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZRGBA]())
 
         if init is None:
             return
diff --git a/pcl/pxi/PointCloud_PointXYZRGB_180.pxi b/pcl/pxi/PointCloud_PointXYZRGB_180.pxi
index 75c408f..6fe51de 100644
--- a/pcl/pxi/PointCloud_PointXYZRGB_180.pxi
+++ b/pcl/pxi/PointCloud_PointXYZRGB_180.pxi
@@ -18,7 +18,6 @@ cimport pcl_surface_180 as pclsf
 
 from libcpp cimport bool
 cimport indexing as idx
-from boost_shared_ptr cimport sp_assign
 from _pcl cimport PointCloud_PointXYZRGB
 
 cdef extern from "minipcl.h":
@@ -56,8 +55,8 @@ cdef class PointCloud_PointXYZRGB:
 
         self._view_count = 0
 
-        # sp_assign(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZRGB]]> self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZRGB]())
-        sp_assign(self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZRGB]())
+        # <cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZRGB]]> self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZRGB]())
+        self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZRGB]())
 
         if init is None:
             return
diff --git a/pcl/pxi/PointCloud_PointXYZ_180.pxi b/pcl/pxi/PointCloud_PointXYZ_180.pxi
index f386e9c..d5073c1 100644
--- a/pcl/pxi/PointCloud_PointXYZ_180.pxi
+++ b/pcl/pxi/PointCloud_PointXYZ_180.pxi
@@ -21,7 +21,6 @@ cimport pcl_range_image_180 as pcl_r_img
 from libcpp cimport bool
 cimport indexing as idx
 
-from boost_shared_ptr cimport sp_assign
 
 cdef extern from "minipcl.h":
     void mpcl_compute_normals(cpp.PointCloud_t, int ksearch,
@@ -64,8 +63,8 @@ cdef class PointCloud:
         self._view_count = 0
         
         # TODO: NG --> import pcl --> pyd Error(python shapedptr/C++ shard ptr collusion?)
-        # sp_assign(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZ]())
-        sp_assign(self.thisptr_shared, new cpp.PointCloud[cpp.PointXYZ]())
+        # <cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZ]())
+        self.thisptr_shared.reset(new cpp.PointCloud[cpp.PointXYZ]())
         
         if init is None:
             return
@@ -535,19 +534,19 @@ cdef class PointCloud:
     def make_GeneralizedIterativeClosestPoint(self):
         generalizedIterativeClosestPoint = GeneralizedIterativeClosestPoint(self)
         cdef pcl_reg.GeneralizedIterativeClosestPoint_t *cGeneralizedIterativeClosestPoint = <pcl_reg.GeneralizedIterativeClosestPoint_t *>generalizedIterativeClosestPoint.me
-        cGeneralizedIterativeClosestPoint.setInputCloud(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
+        cGeneralizedIterativeClosestPoint.setInputSource(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
         return generalizedIterativeClosestPoint
 
     def make_IterativeClosestPointNonLinear(self):
         iterativeClosestPointNonLinear = IterativeClosestPointNonLinear(self)
         cdef pcl_reg.IterativeClosestPointNonLinear_t *cIterativeClosestPointNonLinear = <pcl_reg.IterativeClosestPointNonLinear_t *>iterativeClosestPointNonLinear.me
-        cIterativeClosestPointNonLinear.setInputCloud(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
+        cIterativeClosestPointNonLinear.setInputSource(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
         return iterativeClosestPointNonLinear
 
     def make_IterativeClosestPoint(self):
         iterativeClosestPoint = IterativeClosestPoint(self)
         cdef pcl_reg.IterativeClosestPoint_t *cIterativeClosestPoint = <pcl_reg.IterativeClosestPoint_t *>iterativeClosestPoint.me
-        cIterativeClosestPoint.setInputCloud(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
+        cIterativeClosestPoint.setInputSource(<cpp.shared_ptr[cpp.PointCloud[cpp.PointXYZ]]> self.thisptr_shared)
         return iterativeClosestPoint
 
     def make_MomentOfInertiaEstimation(self):
diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi
index ba039e7..1f85808 100644
--- a/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi
+++ b/pcl/pxi/SampleConsensus/SampleConsensusModelCylinder.pxi
@@ -9,6 +9,6 @@ cdef class SampleConsensusModelCylinder:
 
     def __cinit__(self, PointCloud pc not None):
         # shared_ptr
-        sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelCylinder[cpp.PointXYZ, cpp.Normal](pc.thisptr_shared))
+        self.thisptr_shared.reset(new pcl_sac.SampleConsensusModelCylinder[cpp.PointXYZ, cpp.Normal](pc.thisptr_shared))
         pass
 
diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi
index eca5264..f3e6def 100644
--- a/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi
+++ b/pcl/pxi/SampleConsensus/SampleConsensusModelLine.pxi
@@ -9,6 +9,6 @@ cdef class SampleConsensusModelLine:
 
     def __cinit__(self, PointCloud pc not None):
         # shared_ptr
-        sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelLine[cpp.PointXYZ](pc.thisptr_shared))
+        self.thisptr_shared.reset(new pcl_sac.SampleConsensusModelLine[cpp.PointXYZ](pc.thisptr_shared))
         pass
 
diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi
index c142541..7dc596a 100644
--- a/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi
+++ b/pcl/pxi/SampleConsensus/SampleConsensusModelPlane.pxi
@@ -13,7 +13,7 @@ cdef class SampleConsensusModelPlane:
         # self.me = new pcl_sac.SampleConsensusModelPlane_t()
         # self.me = new pcl_sac.SampleConsensusModelPlane_t(pc.thisptr_shared)
         # shared_ptr
-        sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelPlane[cpp.PointXYZ](pc.thisptr_shared))
+        self.thisptr_shared.reset(new pcl_sac.SampleConsensusModelPlane[cpp.PointXYZ](pc.thisptr_shared))
         pass
 
     # def __dealloc__(self):
diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi
index fc87e60..4a5ebd8 100644
--- a/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi
+++ b/pcl/pxi/SampleConsensus/SampleConsensusModelRegistration.pxi
@@ -9,6 +9,6 @@ cdef class SampleConsensusModelRegistration:
 
     def __cinit__(self, PointCloud pc not None):
         # shared_ptr
-        sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelRegistration[cpp.PointXYZ](pc.thisptr_shared))
+        self.thisptr_shared.reset(new pcl_sac.SampleConsensusModelRegistration[cpp.PointXYZ](pc.thisptr_shared))
         pass
 
diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi
index a26a736..e9a7e3b 100644
--- a/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi
+++ b/pcl/pxi/SampleConsensus/SampleConsensusModelSphere.pxi
@@ -2,7 +2,6 @@
 cimport pcl_defs as cpp
 cimport pcl_sample_consensus as pcl_sac
 
-from boost_shared_ptr cimport sp_assign
 
 cdef class SampleConsensusModelSphere:
     """
@@ -12,8 +11,8 @@ cdef class SampleConsensusModelSphere:
 
     def __cinit__(self, PointCloud pc not None):
         # NG
-        # sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelSphere_t(pc.thisptr_shared))
-        sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelSphere[cpp.PointXYZ](pc.thisptr_shared))
+        # self.thisptr_shared.reset(new pcl_sac.SampleConsensusModelSphere_t(pc.thisptr_shared))
+        self.thisptr_shared.reset(new pcl_sac.SampleConsensusModelSphere[cpp.PointXYZ](pc.thisptr_shared))
         pass
 
     # def __dealloc__(self):
diff --git a/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi b/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi
index 574fd1e..653e478 100644
--- a/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi
+++ b/pcl/pxi/SampleConsensus/SampleConsensusModelStick.pxi
@@ -9,6 +9,6 @@ cdef class SampleConsensusModelStick:
 
     def __cinit__(self, PointCloud pc not None):
         # shared_ptr
-        sp_assign(self.thisptr_shared, new pcl_sac.SampleConsensusModelStick[cpp.PointXYZ](pc.thisptr_shared))
+        self.thisptr_shared.reset(new pcl_sac.SampleConsensusModelStick[cpp.PointXYZ](pc.thisptr_shared))
         pass
 
diff --git a/pcl/pxi/Surface/MovingLeastSquares_180.pxi b/pcl/pxi/Surface/MovingLeastSquares_180.pxi
index 8351493..8e6125a 100644
--- a/pcl/pxi/Surface/MovingLeastSquares_180.pxi
+++ b/pcl/pxi/Surface/MovingLeastSquares_180.pxi
@@ -34,7 +34,7 @@ cdef class MovingLeastSquares:
         Sets whether the surface and normal are approximated using a polynomial,
         or only via tangent estimation.
         """
-        self.me.setPolynomialFit(fit)
+        self.me.setPolynomialOrder(fit)
     
     def set_Compute_Normals(self, bool flag):
         self.me.setComputeNormals(flag)
@@ -90,7 +90,7 @@ cdef class MovingLeastSquares:
 #         Sets whether the surface and normal are approximated using a polynomial,
 #         or only via tangent estimation.
 #         """
-#         self.me.setPolynomialFit(fit)
+#         self.me.setPolynomialOrder(fit)
 # 
 #     def process(self):
 #         """
@@ -132,7 +132,7 @@ cdef class MovingLeastSquares_PointXYZRGB:
         Sets whether the surface and normal are approximated using a polynomial,
         or only via tangent estimation.
         """
-        self.me.setPolynomialFit(fit)
+        self.me.setPolynomialOrder(fit)
     
     def process(self):
         """
@@ -176,7 +176,7 @@ cdef class MovingLeastSquares_PointXYZRGBA:
         Sets whether the surface and normal are approximated using a polynomial,
         or only via tangent estimation.
         """
-        self.me.setPolynomialFit(fit)
+        self.me.setPolynomialOrder(fit)
     
     def process(self):
         """
diff --git a/pcl/pxi/Vertices.pxi b/pcl/pxi/Vertices.pxi
index baa7c06..d9f3ea8 100644
--- a/pcl/pxi/Vertices.pxi
+++ b/pcl/pxi/Vertices.pxi
@@ -13,8 +13,8 @@ cdef class Vertices:
         self._view_count = 0
         
         # self.me = new cpp.Vertices()
-        # sp_assign(<cpp.shared_ptr[cpp.Vertices]> self.thisptr_shared, new cpp.Vertices())
-        sp_assign(self.thisptr_shared, new cpp.Vertices())
+        # <cpp.shared_ptr[cpp.Vertices]> self.thisptr_shared.reset(new cpp.Vertices())
+        self.thisptr_shared.reset(new cpp.Vertices())
         
         if init is None:
             return
diff --git a/pcl/pxi/Visualization/CloudViewing.pxi b/pcl/pxi/Visualization/CloudViewing.pxi
index 3505d40..bc37fc4 100644
--- a/pcl/pxi/Visualization/CloudViewing.pxi
+++ b/pcl/pxi/Visualization/CloudViewing.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pclvis
-from boost_shared_ptr cimport sp_assign
 
 cdef class CloudViewing:
     """
@@ -14,8 +13,8 @@ cdef class CloudViewing:
 
     def __cinit__(self):
         # self.me = new pclvis.CloudViewer()
-        # sp_assign(<cpp.shared_ptr[pclvis.CloudViewer]> self.thisptr_shared, new pclvis.CloudViewer('cloud'))
-        sp_assign(self.thisptr_shared, new pclvis.CloudViewer('cloud'))
+        # <cpp.shared_ptr[pclvis.CloudViewer]> self.thisptr_shared.reset(new pclvis.CloudViewer('cloud'))
+        self.thisptr_shared.reset(new pclvis.CloudViewer('cloud'))
 
     cdef inline pclvis.CloudViewer *thisptr(self) nogil:
         # Shortcut to get raw pointer to underlying CloudViewer
diff --git a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringCustom.pxi b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringCustom.pxi
index e0afac7..96c2d4d 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringCustom.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringCustom.pxi
@@ -8,7 +8,6 @@ cimport numpy as cnp
 
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudColorHandleringCustom:
     """
@@ -20,11 +19,11 @@ cdef class PointCloudColorHandleringCustom:
 
     # void sp_assign[T](shared_ptr[T] &p, T *value)
     def __cinit__(self, _pcl.PointCloud pc, int r, int g, int b):
-        sp_assign(self.thisptr_shared, new pcl_vis.PointCloudColorHandlerCustom[cpp.PointXYZ](pc.thisptr_shared, r, g, b))
+        self.thisptr_shared.reset(new pcl_vis.PointCloudColorHandlerCustom[cpp.PointXYZ](pc.thisptr_shared, r, g, b))
         pass
 
     # def __cinit__(self, _pcl.RangeImages rangeImage, int r, int g, int b):
-    #     sp_assign(self.thisptr_shared, new pcl_vis.PointCloudColorHandlerCustom[cpp.PointWithViewpoint](rangeImage.thisptr_shared, r, g, b))
+    #     self.thisptr_shared.reset(new pcl_vis.PointCloudColorHandlerCustom[cpp.PointWithViewpoint](rangeImage.thisptr_shared, r, g, b))
     #     pass
 
     def __dealloc__(self):
diff --git a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringGenericField.pxi b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringGenericField.pxi
index 3fc7623..95e5543 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringGenericField.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringGenericField.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudColorHandleringGenericField:
     """
diff --git a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringHSVField.pxi b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringHSVField.pxi
index c1f94da..16354df 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringHSVField.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringHSVField.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudColorHandleringHSVField:
     """
diff --git a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRGBField.pxi b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRGBField.pxi
index ccb5ce7..92aa9b3 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRGBField.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRGBField.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudColorHandleringRGBField:
     """
diff --git a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRandom.pxi b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRandom.pxi
index 67cecc9..ce31da9 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRandom.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudColorHandleringRandom.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudColorHandleringRandom:
     """
diff --git a/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringCustom.pxi b/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringCustom.pxi
index 37265f0..036c616 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringCustom.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringCustom.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudGeometryHandlerCustom:
     """
diff --git a/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringSurfaceNormal.pxi b/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringSurfaceNormal.pxi
index 51b4be2..feceeb5 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringSurfaceNormal.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringSurfaceNormal.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudGeometryHandleringSurfaceNormal:
     """
diff --git a/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringXYZ.pxi b/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringXYZ.pxi
index 45ba5b1..e9ebf9f 100644
--- a/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringXYZ.pxi
+++ b/pcl/pxi/Visualization/Handler/PointCloudGeometryHandleringXYZ.pxi
@@ -4,7 +4,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pcl_vis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PointCloudGeometryHandleringXYZ:
     """
diff --git a/pcl/pxi/Visualization/PCLHistogramViewing.pxi b/pcl/pxi/Visualization/PCLHistogramViewing.pxi
index 15af51e..0ee3e21 100644
--- a/pcl/pxi/Visualization/PCLHistogramViewing.pxi
+++ b/pcl/pxi/Visualization/PCLHistogramViewing.pxi
@@ -5,7 +5,6 @@ cimport pcl_defs as cpp
 cimport numpy as cnp
 
 cimport pcl_visualization_defs as pclvis
-from boost_shared_ptr cimport sp_assign
 
 cdef class PCLHistogramViewing:
     """
@@ -13,7 +12,7 @@ cdef class PCLHistogramViewing:
     cdef pclvis.PCLHistogramVisualizerPtr_t thisptr_shared
 
     def __cinit__(self):
-        sp_assign(self.thisptr_shared, new pclvis.PCLHistogramVisualizer())
+        self.thisptr_shared.reset(new pclvis.PCLHistogramVisualizer())
 
     cdef inline pclvis.PCLHistogramVisualizer *thisptr(self) nogil:
         # Shortcut to get raw pointer to underlying PCLHistogramVisualizer
diff --git a/pcl/pxi/Visualization/PCLVisualizering.pxi b/pcl/pxi/Visualization/PCLVisualizering.pxi
index 48238db..f92465b 100644
--- a/pcl/pxi/Visualization/PCLVisualizering.pxi
+++ b/pcl/pxi/Visualization/PCLVisualizering.pxi
@@ -10,8 +10,7 @@ cimport pcl_visualization_defs as pclvis
 
 from libcpp.string cimport string
 
-from boost_shared_ptr cimport shared_ptr
-from boost_shared_ptr cimport sp_assign
+from libcpp.memory cimport shared_ptr
 
 
 cdef class PCLVisualizering:
@@ -20,7 +19,7 @@ cdef class PCLVisualizering:
     cdef pclvis.PCLVisualizerPtr_t thisptr_shared
     
     def __cinit__(self):
-        sp_assign(self.thisptr_shared, new pclvis.PCLVisualizer('visual', True))
+        self.thisptr_shared.reset(new pclvis.PCLVisualizer('visual', True))
 
     cdef inline pclvis.PCLVisualizer *thisptr(self) nogil:
         # Shortcut to get raw pointer to underlying PCLVisualizer
diff --git a/pcl/pxi/registration/GeneralizedIterativeClosestPoint_180.pxi b/pcl/pxi/registration/GeneralizedIterativeClosestPoint_180.pxi
index 809f737..918a130 100644
--- a/pcl/pxi/registration/GeneralizedIterativeClosestPoint_180.pxi
+++ b/pcl/pxi/registration/GeneralizedIterativeClosestPoint_180.pxi
@@ -3,7 +3,7 @@ import numpy as np
 cimport _pcl
 cimport pcl_defs as cpp
 cimport pcl_registration_180 as pcl_reg
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 from eigen cimport Matrix4f
 
@@ -86,6 +86,6 @@ cdef class GeneralizedIterativeClosestPoint:
             Sum of squares error in the estimated transformation.
         """
         cdef pcl_reg.GeneralizedIterativeClosestPoint_t gicp
-        gicp.setInputCloud(source.thisptr_shared)
+        gicp.setInputSource(source.thisptr_shared)
         return self.run(gicp, source, target, max_iter)
 
diff --git a/pcl/pxi/registration/IterativeClosestPointNonLinear_180.pxi b/pcl/pxi/registration/IterativeClosestPointNonLinear_180.pxi
index c3db5e9..7f21000 100644
--- a/pcl/pxi/registration/IterativeClosestPointNonLinear_180.pxi
+++ b/pcl/pxi/registration/IterativeClosestPointNonLinear_180.pxi
@@ -3,7 +3,7 @@ import numpy as np
 cimport _pcl
 cimport pcl_defs as cpp
 cimport pcl_registration_180 as pcl_reg
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 from eigen cimport Matrix4f
 
@@ -87,6 +87,6 @@ cdef class IterativeClosestPointNonLinear:
             Sum of squares error in the estimated transformation.
         """
         cdef pcl_reg.IterativeClosestPointNonLinear_t icp_nl
-        icp_nl.setInputCloud(source.thisptr_shared)
+        icp_nl.setInputSource(source.thisptr_shared)
         return self.run(icp_nl, source, target, max_iter)
 
diff --git a/pcl/pxi/registration/IterativeClosestPoint_180.pxi b/pcl/pxi/registration/IterativeClosestPoint_180.pxi
index cef4981..535dec2 100644
--- a/pcl/pxi/registration/IterativeClosestPoint_180.pxi
+++ b/pcl/pxi/registration/IterativeClosestPoint_180.pxi
@@ -7,7 +7,7 @@ import numpy as np
 cimport _pcl
 cimport pcl_defs as cpp
 cimport pcl_registration_180 as pcl_reg
-from boost_shared_ptr cimport shared_ptr
+from libcpp.memory cimport shared_ptr
 
 from eigen cimport Matrix4f
 
@@ -101,5 +101,5 @@ cdef class IterativeClosestPoint:
             Sum of squares error in the estimated transformation.
         """
         cdef pcl_reg.IterativeClosestPoint_t icp
-        icp.setInputCloud(source.thisptr_shared)
+        icp.setInputSource(source.thisptr_shared)
         return self.run(icp, source, target, max_iter)
diff --git a/pcl/shared_ptr.pxd b/pcl/shared_ptr.pxd
deleted file mode 100644
index 29ab9fc..0000000
--- a/pcl/shared_ptr.pxd
+++ /dev/null
@@ -1,18 +0,0 @@
-cimport pcl_defs as cpp
-from libcpp cimport bool
-
-cdef extern from "boost/smart_ptr/shared_ptr.hpp" namespace "boost" nogil:
-    cdef cppclass shared_ptr[T]:
-        shared_ptr()
-        shared_ptr(T*)
-        T* get()
-        bool unique()
-        long use_count()
-        void swap(shared_ptr[T])
-        void reset(T*)
-
-cdef extern from "shared_ptr_assign.h" nogil:
-    #void sp_assign(shared_ptr[cpp.PointCloud[cpp.PointXYZ]] &t, cpp.PointCloud[cpp.PointXYZ] *value)
-    void sp_assign[T](shared_ptr[T] &p, T *value)
-
-
diff --git a/pcl/shared_ptr_assign.h b/pcl/shared_ptr_assign.h
deleted file mode 100644
index 0150fb3..0000000
--- a/pcl/shared_ptr_assign.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <pcl/point_cloud.h>
-#include <pcl/point_types.h>
-
-namespace {
-    // Workaround for lack of operator= support in Cython.
-    template <typename T>
-    void sp_assign(boost::shared_ptr<T> &p, T *v)
-    {
-        p = boost::shared_ptr<T>(v);
-    }
-}
diff --git a/setup.py b/setup.py
index d3f34f6..2737368 100644
--- a/setup.py
+++ b/setup.py
@@ -510,7 +510,7 @@ else:
         os.environ['ARCHFLAGS'] = ''
 
     # Try to find PCL. XXX we should only do this when trying to build or install.
-    PCL_SUPPORTED = ["-1.10", "-1.9", "-1.8", "-1.7", "-1.6", ""]    # in order of preference
+    PCL_SUPPORTED = ["-1.11", "-1.10", "-1.9", "-1.8", "-1.7", "-1.6", ""]    # in order of preference
 
     for pcl_version in PCL_SUPPORTED:
         if subprocess.call(['pkg-config', 'pcl_common%s' % pcl_version]) == 0:
@@ -589,10 +589,6 @@ else:
     ext_args['extra_link_args'].append('-lboost_system')
     # ext_args['extra_link_args'].append('-lboost_bind')
 
-    # Fix compile error on Ubuntu 12.04 (e.g., Travis-CI).
-    ext_args['define_macros'].append(
-        ("EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET", "1"))
-
     if pcl_version == '-1.6':
         module = [Extension("pcl._pcl", ["pcl/_pcl.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args),
                   # Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", **ext_args),
@@ -621,7 +617,7 @@ else:
                   # debug
                   # gdb_debug=True,
                   ]
-    elif pcl_version == '-1.10':
+    elif pcl_version == '-1.10' or pcl_version == '-1.11':
         module = [Extension("pcl._pcl", ["pcl/_pcl_180.pyx", "pcl/minipcl.cpp", "pcl/ProjectInliers.cpp"], language="c++", **ext_args),
                   Extension("pcl.pcl_visualization", ["pcl/pcl_visualization.pyx"], language="c++", extra_compile_args=['-fno-strict-aliasing'], **ext_args),
                   # Extension("pcl.pcl_grabber", ["pcl/pcl_grabber.pyx", "pcl/grabber_callback.cpp"], language="c++", **ext_args),
