-%template(modelAPI_AttributeDocRef) boost_cast<ModelAPI_AttributeDocRef, ModelAPI_Attribute>;
-%template(modelAPI_AttributeDouble) boost_cast<ModelAPI_AttributeDouble, ModelAPI_Attribute>;
-%template(modelAPI_AttributeInteger) boost_cast<ModelAPI_AttributeInteger, ModelAPI_Attribute>;
-%template(modelAPI_AttributeString) boost_cast<ModelAPI_AttributeString, ModelAPI_Attribute>;
-%template(modelAPI_AttributeReference) boost_cast<ModelAPI_AttributeReference, ModelAPI_Attribute>;
-%template(modelAPI_AttributeRefAttr) boost_cast<ModelAPI_AttributeRefAttr, ModelAPI_Attribute>;
-%template(modelAPI_AttributeBoolean) boost_cast<ModelAPI_AttributeBoolean, ModelAPI_Attribute>;
-%template(modelAPI_AttributeSelection) boost_cast<ModelAPI_AttributeSelection, ModelAPI_Attribute>;
-%template(modelAPI_AttributeSelectionList) boost_cast<ModelAPI_AttributeSelectionList, ModelAPI_Attribute>;
-%template(modelAPI_AttributeRefList) boost_cast<ModelAPI_AttributeRefList, ModelAPI_Attribute>;
+%template(modelAPI_AttributeDocRef) shared_ptr_cast<ModelAPI_AttributeDocRef, ModelAPI_Attribute>;
+%template(modelAPI_AttributeDouble) shared_ptr_cast<ModelAPI_AttributeDouble, ModelAPI_Attribute>;
+%template(modelAPI_AttributeDoubleArray) shared_ptr_cast<ModelAPI_AttributeDoubleArray, ModelAPI_Attribute>;
+%template(modelAPI_AttributeInteger) shared_ptr_cast<ModelAPI_AttributeInteger, ModelAPI_Attribute>;
+%template(modelAPI_AttributeIntArray) shared_ptr_cast<ModelAPI_AttributeIntArray, ModelAPI_Attribute>;
+%template(modelAPI_AttributeString) shared_ptr_cast<ModelAPI_AttributeString, ModelAPI_Attribute>;
+%template(modelAPI_AttributeStringArray) shared_ptr_cast<ModelAPI_AttributeStringArray, ModelAPI_Attribute>;
+%template(modelAPI_AttributeReference) shared_ptr_cast<ModelAPI_AttributeReference, ModelAPI_Attribute>;
+%template(modelAPI_AttributeRefAttr) shared_ptr_cast<ModelAPI_AttributeRefAttr, ModelAPI_Attribute>;
+%template(modelAPI_AttributeBoolean) shared_ptr_cast<ModelAPI_AttributeBoolean, ModelAPI_Attribute>;
+%template(modelAPI_AttributeSelection) shared_ptr_cast<ModelAPI_AttributeSelection, ModelAPI_Attribute>;
+%template(modelAPI_AttributeSelectionList) shared_ptr_cast<ModelAPI_AttributeSelectionList, ModelAPI_Attribute>;
+%template(modelAPI_AttributeRefList) shared_ptr_cast<ModelAPI_AttributeRefList, ModelAPI_Attribute>;
+%template(modelAPI_AttributeRefAttrList) shared_ptr_cast<ModelAPI_AttributeRefAttrList, ModelAPI_Attribute>;
+%template(modelAPI_AttributeTables) shared_ptr_cast<ModelAPI_AttributeTables, ModelAPI_Attribute>;
+
+%template(PointList) std::list<std::shared_ptr<GeomAPI_Pnt> >;
+%template(PointSet) std::set<std::shared_ptr<GeomAPI_Pnt> >;
+
+// Geometry casts
+%template(shapeToEdge) shared_ptr_cast<GeomAPI_Edge, GeomAPI_Shape>;