diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,18 @@
 
 ## Unreleased
 
+## 0.2.0.0
+
+### Added
+
+- Added OpenCascade.BRepGProp
+- Added OpenCascade.GProp.GProps
+- Added OpenCascade.BRepBndLib 
+- Added OpenCascade.Bnd.Box
+- Added OpenCascade.Bnd.OBB
+- Added OpenCascade.GP.XYZ (just the barebones Constructor and Getter/Setter methods)
+- Added `setDisplacement` to OpenCascade.GP.Trsf
+
 ## 0.1.2.2 - 2024-01-09 
 
 ## 0.1.2.1 - 2024-01-09 
diff --git a/cpp/hs_BRepBndLib.cpp b/cpp/hs_BRepBndLib.cpp
new file mode 100644
--- /dev/null
+++ b/cpp/hs_BRepBndLib.cpp
@@ -0,0 +1,14 @@
+#include <BRepBndLib.hxx>
+#include "hs_BRepBndLib.h"
+
+void hs_BRepBndLib_add(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation){
+    BRepBndLib::Add(*shape, *box, useTriangulation);
+}
+
+void hs_BRepBndLib_addOptimal(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation, bool useShapeTolerance){
+    BRepBndLib::AddOptimal(*shape, *box, useTriangulation, useShapeTolerance);
+}
+
+void hs_BRepBndLib_addOBB(TopoDS_Shape *shape, Bnd_OBB * obb, bool isTriangulationUsed, bool isOptimal, bool isShapeToleranceUsed){
+    BRepBndLib::AddOBB(*shape, *obb, isTriangulationUsed, isOptimal, isShapeToleranceUsed);
+}
diff --git a/cpp/hs_BRepBndLib.h b/cpp/hs_BRepBndLib.h
new file mode 100644
--- /dev/null
+++ b/cpp/hs_BRepBndLib.h
@@ -0,0 +1,20 @@
+#ifndef HS_BREPBNDLIB_H
+#define HS_BREPBNDLIB_H
+
+#include "hs_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void hs_BRepBndLib_add(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation);
+
+void hs_BRepBndLib_addOptimal(TopoDS_Shape * shape, Bnd_Box * box, bool useTriangulation, bool useShapeTolerance);
+
+void hs_BRepBndLib_addOBB(TopoDS_Shape *shape, Bnd_OBB * obb, bool isTriangulationUsed, bool isOptimal, bool isShapeToleranceUsed);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HS_BREPBNDLIB_H
diff --git a/cpp/hs_BRepGProp.cpp b/cpp/hs_BRepGProp.cpp
new file mode 100644
--- /dev/null
+++ b/cpp/hs_BRepGProp.cpp
@@ -0,0 +1,6 @@
+#include <BRepGProp.hxx>
+#include "hs_BRepGProp.h"
+
+void hs_BRepGProp_VolumeProperties(TopoDS_Shape *shape, GProp_GProps *props, bool onlyClosed, bool skipShared, bool useTriangulation ){
+    BRepGProp::VolumeProperties(*shape, *props, onlyClosed, skipShared, useTriangulation);
+}
diff --git a/cpp/hs_BRepGProp.h b/cpp/hs_BRepGProp.h
new file mode 100644
--- /dev/null
+++ b/cpp/hs_BRepGProp.h
@@ -0,0 +1,16 @@
+#ifndef HS_BREPGPROP_H
+#define HS_BREPGPROP_H
+
+#include "hs_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void hs_BRepGProp_VolumeProperties(TopoDS_Shape * shape, GProp_GProps * props, bool onlyClosed, bool skipShared, bool useTriangulation );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HS_BREPGPROP_H
diff --git a/cpp/hs_Bnd_Box.cpp b/cpp/hs_Bnd_Box.cpp
new file mode 100644
--- /dev/null
+++ b/cpp/hs_Bnd_Box.cpp
@@ -0,0 +1,18 @@
+#include <Bnd_Box.hxx>
+#include "hs_Bnd_Box.h"
+
+Bnd_Box * hs_new_Bnd_Box(){
+    return new Bnd_Box();
+}
+
+void hs_delete_Bnd_Box(Bnd_Box * box){
+    delete box;
+}
+
+gp_Pnt * hs_Bnd_Box_cornerMin(Bnd_Box * box){
+    return new gp_Pnt(box->CornerMin());
+}
+
+gp_Pnt * hs_Bnd_Box_cornerMax(Bnd_Box * box){
+    return new gp_Pnt(box->CornerMax());
+}
diff --git a/cpp/hs_Bnd_Box.h b/cpp/hs_Bnd_Box.h
new file mode 100644
--- /dev/null
+++ b/cpp/hs_Bnd_Box.h
@@ -0,0 +1,22 @@
+#ifndef HS_BND_BOX_H
+#define HS_BND_BOX_H
+
+#include "hs_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Bnd_Box * hs_new_Bnd_Box();
+
+void hs_delete_Bnd_Box(Bnd_Box * box);
+
+gp_Pnt * hs_Bnd_Box_cornerMin(Bnd_Box * box);
+
+gp_Pnt * hs_Bnd_Box_cornerMax(Bnd_Box * box);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HS_BND_BOX_H
diff --git a/cpp/hs_Bnd_OBB.cpp b/cpp/hs_Bnd_OBB.cpp
new file mode 100644
--- /dev/null
+++ b/cpp/hs_Bnd_OBB.cpp
@@ -0,0 +1,42 @@
+#include <Bnd_OBB.hxx>
+#include "hs_Bnd_OBB.h"
+
+Bnd_OBB * hs_new_Bnd_OBB() {
+    return new Bnd_OBB();
+}
+
+void hs_delete_Bnd_OBB(Bnd_OBB * obb){
+    delete obb;
+}
+
+gp_XYZ * hs_Bnd_OBB_center(Bnd_OBB * obb){
+    return new gp_XYZ(obb->Center());
+}
+
+gp_XYZ * hs_Bnd_OBB_xDirection(Bnd_OBB * obb){
+    return new gp_XYZ(obb->XDirection());
+}
+
+gp_XYZ * hs_Bnd_OBB_yDirection(Bnd_OBB * obb){
+    return new gp_XYZ(obb->YDirection());
+}
+
+gp_XYZ * hs_Bnd_OBB_zDirection(Bnd_OBB * obb){
+    return new gp_XYZ(obb->ZDirection());
+}
+
+double hs_Bnd_OBB_xHSize(Bnd_OBB *obb){
+    return obb->XHSize();
+}
+
+double hs_Bnd_OBB_yHSize(Bnd_OBB *obb){
+    return obb->YHSize();
+}
+
+double hs_Bnd_OBB_zHSize(Bnd_OBB *obb){
+    return obb->ZHSize();
+}
+
+gp_Ax3 * hs_Bnd_OBB_position(Bnd_OBB *obb){
+    return new gp_Ax3(obb->Position());
+}
diff --git a/cpp/hs_Bnd_OBB.h b/cpp/hs_Bnd_OBB.h
new file mode 100644
--- /dev/null
+++ b/cpp/hs_Bnd_OBB.h
@@ -0,0 +1,34 @@
+#ifndef HS_BND_OBB_H
+#define HS_BND_OBB_H
+
+#include "hs_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Bnd_OBB * hs_new_Bnd_OBB();
+
+void hs_delete_Bnd_OBB(Bnd_OBB * obb);
+
+gp_XYZ * hs_Bnd_OBB_center(Bnd_OBB * obb);
+
+gp_XYZ * hs_Bnd_OBB_xDirection(Bnd_OBB * obb);
+
+gp_XYZ * hs_Bnd_OBB_yDirection(Bnd_OBB * obb);
+
+gp_XYZ * hs_Bnd_OBB_zDirection(Bnd_OBB * obb);
+
+double hs_Bnd_OBB_xHSize(Bnd_OBB *obb);
+
+double hs_Bnd_OBB_yHSize(Bnd_OBB *obb);
+
+double hs_Bnd_OBB_zHSize(Bnd_OBB *obb);
+
+gp_Ax3 * hs_Bnd_OBB_position(Bnd_OBB *obb);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HS_BND_OBB_H
diff --git a/cpp/hs_GProp_GProps.cpp b/cpp/hs_GProp_GProps.cpp
new file mode 100644
--- /dev/null
+++ b/cpp/hs_GProp_GProps.cpp
@@ -0,0 +1,26 @@
+#include <GProp_GProps.hxx>
+#include "hs_GProp_GProps.h"
+
+GProp_GProps * hs_new_GProp_GProps(){
+    return new GProp_GProps();
+}
+
+GProp_GProps * hs_new_GProp_GProps_fromSystemLocation(gp_Pnt * pnt){
+    return new GProp_GProps(*pnt);
+}
+
+void  hs_delete_GProp_GProps(GProp_GProps * props){
+    delete props;
+}
+
+double hs_GProp_GProps_mass(GProp_GProps * props){
+    return props->Mass();
+}
+
+gp_Pnt * hs_GProp_GProps_centreOfMass(GProp_GProps * props){
+    return new gp_Pnt(props->CentreOfMass());
+}
+
+double hs_GProp_GProps_momentOfInertia(GProp_GProps * props, gp_Ax1 * ax){
+    return props->MomentOfInertia(*ax);
+}
diff --git a/cpp/hs_GProp_GProps.h b/cpp/hs_GProp_GProps.h
new file mode 100644
--- /dev/null
+++ b/cpp/hs_GProp_GProps.h
@@ -0,0 +1,26 @@
+#ifndef HS_GPROP_GPROPS_H
+#define HS_GPROP_GPROPS_H
+
+#include "hs_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+GProp_GProps * hs_new_GProp_GProps();
+
+GProp_GProps * hs_new_GProp_GProps_fromSystemLocation(gp_Pnt * pnt);
+
+void  hs_delete_GProp_GProps(GProp_GProps * props);
+
+double hs_GProp_GProps_mass(GProp_GProps * props);
+
+gp_Pnt * hs_GProp_GProps_centreOfMass(GProp_GProps * props);
+
+double hs_GProp_GProps_momentOfInertia(GProp_GProps * props, gp_Ax1 * ax);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HS_GPROP_GPROPS
diff --git a/cpp/hs_gp_Trsf.cpp b/cpp/hs_gp_Trsf.cpp
--- a/cpp/hs_gp_Trsf.cpp
+++ b/cpp/hs_gp_Trsf.cpp
@@ -45,6 +45,10 @@
     trsf->SetScaleFactor(s);
 }
 
+void hs_gp_Trsf_SetDisplacement(gp_Trsf * trsf, gp_Ax3 *from, gp_Ax3 * to){
+    trsf->SetDisplacement(*from, *to);
+}
+
 void hs_gp_Trsf_SetValues(gp_Trsf * trsf, 
         double a11, double a12, double a13, double a14,
         double a21, double a22, double a23, double a24,
diff --git a/cpp/hs_gp_Trsf.h b/cpp/hs_gp_Trsf.h
--- a/cpp/hs_gp_Trsf.h
+++ b/cpp/hs_gp_Trsf.h
@@ -39,6 +39,8 @@
 
 double hs_gp_Trsf_ScaleFactor(gp_Trsf * trsf);
 
+void hs_gp_Trsf_SetDisplacement(gp_Trsf * trsf, gp_Ax3 *from, gp_Ax3 * to);
+
 double hs_gp_Trsf_Value(gp_Trsf* trsf, int row, int col);
 
 void hs_gp_Trsf_Invert(gp_Trsf* trsf);
diff --git a/cpp/hs_gp_XYZ.cpp b/cpp/hs_gp_XYZ.cpp
new file mode 100644
--- /dev/null
+++ b/cpp/hs_gp_XYZ.cpp
@@ -0,0 +1,39 @@
+#include <gp_XYZ.hxx>
+#include "hs_gp_XYZ.h"
+
+gp_XYZ * hs_new_gp_XYZ(){
+    return new gp_XYZ();
+}
+
+gp_XYZ * hs_new_gp_XYZ_fromDoubles(double x, double y, double z){
+    return new gp_XYZ(x, y, z);
+}
+
+void hs_delete_gp_XYZ(gp_XYZ * xyz){
+    delete xyz;
+}
+
+void hs_gp_XYZ_setX(gp_XYZ * xyz, double x){
+    xyz->SetX(x);
+}
+
+void hs_gp_XYZ_setY(gp_XYZ * xyz, double y){
+    xyz->SetY(y);
+}
+
+void hs_gp_XYZ_setZ(gp_XYZ * xyz, double z){
+    xyz->SetZ(z);
+}
+
+double hs_gp_XYZ_x(gp_XYZ * xyz){
+    return xyz->X();
+}
+
+double hs_gp_XYZ_y(gp_XYZ * xyz){
+    return xyz->Y();
+}
+
+double hs_gp_XYZ_z(gp_XYZ * xyz){
+    return xyz->Z();
+}
+
diff --git a/cpp/hs_gp_XYZ.h b/cpp/hs_gp_XYZ.h
new file mode 100644
--- /dev/null
+++ b/cpp/hs_gp_XYZ.h
@@ -0,0 +1,33 @@
+#ifndef HS_GP_XYZ_H
+#define HS_GP_XYZ_H
+
+#include "hs_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+gp_XYZ * hs_new_gp_XYZ();
+
+gp_XYZ * hs_new_gp_XYZ_fromDoubles(double x, double y, double z);
+
+void hs_delete_gp_XYZ(gp_XYZ * xyz);
+
+void hs_gp_XYZ_setX(gp_XYZ * xyz, double x);
+
+void hs_gp_XYZ_setY(gp_XYZ * xyz, double y);
+
+void hs_gp_XYZ_setZ(gp_XYZ * xyz, double z);
+
+double hs_gp_XYZ_x(gp_XYZ * xyz);
+
+double hs_gp_XYZ_y(gp_XYZ * xyz);
+
+double hs_gp_XYZ_z(gp_XYZ * xyz);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HS_GP_XYZ_H
+
diff --git a/cpp/hs_types.h b/cpp/hs_types.h
--- a/cpp/hs_types.h
+++ b/cpp/hs_types.h
@@ -28,6 +28,7 @@
 typedef void gp_Trsf;
 typedef void gp_GTrsf;
 typedef void gp_Trsf2d;
+typedef void gp_XYZ;
 typedef void BRep_Builder;
 typedef void BRepBuilderAPI_Transform;
 typedef void BRepBuilderAPI_MakeWire;
@@ -62,6 +63,9 @@
 typedef void BRepOffsetAPI_MakeOffsetShape;
 typedef int BRepOffset_Mode;
 typedef int GeomAbs_JoinType;
+typedef void GProp_GProps;
+typedef void Bnd_Box;
+typedef void Bnd_OBB;
 #define Handle(X) void
 #define ARRAY_1(X) void
 #else // __cplusplus
diff --git a/opencascade-hs.cabal b/opencascade-hs.cabal
--- a/opencascade-hs.cabal
+++ b/opencascade-hs.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           opencascade-hs
-version:        0.1.2.2
+version:        0.2.0.0
 synopsis:       Thin Wrapper for the OpenCASCADE CAD Kernel
 description:    Please see the README on GitHub at <https://github.com/joe-warren/opencascade-hs#readme>
 category:       Graphics,FFI
@@ -21,10 +21,13 @@
     LICENSE
     README.md
     CHANGELOG.md
+    cpp/hs_Bnd_Box.h
+    cpp/hs_Bnd_OBB.h
     cpp/hs_BRep_Tool.h
     cpp/hs_BRepAlgoAPI_Common.h
     cpp/hs_BRepAlgoAPI_Cut.h
     cpp/hs_BRepAlgoAPI_Fuse.h
+    cpp/hs_BRepBndLib.h
     cpp/hs_BRepBuilderAPI_GTransform.h
     cpp/hs_BRepBuilderAPI_MakeEdge.h
     cpp/hs_BRepBuilderAPI_MakeFace.h
@@ -33,6 +36,7 @@
     cpp/hs_BRepBuilderAPI_MakeWire.h
     cpp/hs_BRepBuilderAPI_Transform.h
     cpp/hs_BRepFilletAPI_MakeFillet.h
+    cpp/hs_BRepGProp.h
     cpp/hs_BRepMesh_IncrementalMesh.h
     cpp/hs_BRepOffsetAPI_MakeOffsetShape.h
     cpp/hs_BRepOffsetAPI_MakePipe.h
@@ -64,6 +68,8 @@
     cpp/hs_gp_Trsf2d.h
     cpp/hs_gp_Vec.h
     cpp/hs_gp_Vec2d.h
+    cpp/hs_gp_XYZ.h
+    cpp/hs_GProp_GProps.h
     cpp/hs_NCollection_Array1.h
     cpp/hs_STEPControl_Writer.h
     cpp/hs_StlAPI_Writer.h
@@ -86,10 +92,15 @@
 
 library
   exposed-modules:
+      OpenCascade.Bnd.Box
+      OpenCascade.Bnd.Internal.Destructors
+      OpenCascade.Bnd.OBB
+      OpenCascade.Bnd.Types
       OpenCascade.BRep.Tool
       OpenCascade.BRepAlgoAPI.Common
       OpenCascade.BRepAlgoAPI.Cut
       OpenCascade.BRepAlgoAPI.Fuse
+      OpenCascade.BRepBndLib
       OpenCascade.BRepBuilderAPI
       OpenCascade.BRepBuilderAPI.FaceError
       OpenCascade.BRepBuilderAPI.GTransform
@@ -106,6 +117,7 @@
       OpenCascade.BRepFilletAPI.Internal.Destructors
       OpenCascade.BRepFilletAPI.MakeFillet
       OpenCascade.BRepFilletAPI.Types
+      OpenCascade.BRepGProp
       OpenCascade.BRepMesh
       OpenCascade.BRepMesh.IncrementalMesh
       OpenCascade.BRepMesh.Internal.Destructors
@@ -158,6 +170,10 @@
       OpenCascade.GP.Types
       OpenCascade.GP.Vec
       OpenCascade.GP.Vec2d
+      OpenCascade.GP.XYZ
+      OpenCascade.GProp.GProps
+      OpenCascade.GProp.Internal.Destructors
+      OpenCascade.GProp.Types
       OpenCascade.Graphic3D.HorizontalTextAlignment
       OpenCascade.Graphic3D.VerticalTextAlignment
       OpenCascade.Handle
@@ -208,16 +224,19 @@
       Paths_opencascade_hs
   hs-source-dirs:
       src
-  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-home-modules -Wpartial-fields -Wredundant-constraints -optc -Werror-implicit-function-declaration
+  ghc-options: -Wall -Werror=compat -Werror=identities -Werror=incomplete-record-updates -Werror=incomplete-uni-patterns -Werror=missing-home-modules -Werror=missing-export-lists -Werror=partial-fields -Werror=redundant-constraints -optc -Werror-implicit-function-declaration
   cxx-options: --std=c++17 -Wall -Werror -Wno-deprecated
   include-dirs:
       cpp
       /usr/include/opencascade
   cxx-sources:
+      cpp/hs_Bnd_Box.cpp
+      cpp/hs_Bnd_OBB.cpp
       cpp/hs_BRep_Tool.cpp
       cpp/hs_BRepAlgoAPI_Common.cpp
       cpp/hs_BRepAlgoAPI_Cut.cpp
       cpp/hs_BRepAlgoAPI_Fuse.cpp
+      cpp/hs_BRepBndLib.cpp
       cpp/hs_BRepBuilderAPI_GTransform.cpp
       cpp/hs_BRepBuilderAPI_MakeEdge.cpp
       cpp/hs_BRepBuilderAPI_MakeFace.cpp
@@ -226,6 +245,7 @@
       cpp/hs_BRepBuilderAPI_MakeWire.cpp
       cpp/hs_BRepBuilderAPI_Transform.cpp
       cpp/hs_BRepFilletAPI_MakeFillet.cpp
+      cpp/hs_BRepGProp.cpp
       cpp/hs_BRepMesh_IncrementalMesh.cpp
       cpp/hs_BRepOffsetAPI_MakeOffsetShape.cpp
       cpp/hs_BRepOffsetAPI_MakePipe.cpp
@@ -257,6 +277,8 @@
       cpp/hs_gp_Trsf2d.cpp
       cpp/hs_gp_Vec.cpp
       cpp/hs_gp_Vec2d.cpp
+      cpp/hs_gp_XYZ.cpp
+      cpp/hs_GProp_GProps.cpp
       cpp/hs_NCollection_Array1.cpp
       cpp/hs_STEPControl_Writer.cpp
       cpp/hs_StlAPI_Writer.cpp
diff --git a/src/OpenCascade/BRepBndLib.hs b/src/OpenCascade/BRepBndLib.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/BRepBndLib.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE CApiFFI#-}
+module OpenCascade.BRepBndLib 
+( add
+, addOptimal
+, addOBB
+) where 
+
+import OpenCascade.TopoDS.Types (Shape)
+import OpenCascade.Bnd.Types (Box, OBB)
+import Foreign.Ptr (Ptr)
+import Foreign.C (CBool (..))
+import OpenCascade.Internal.Bool (boolToCBool)
+
+foreign import capi unsafe "hs_BRepBndLib.h hs_BRepBndLib_add" rawAdd ::  Ptr Shape -> Ptr Box -> CBool -> IO ()
+
+add :: Ptr Shape  -> Ptr Box -> Bool -> IO ()
+add shape box useTriangulation = rawAdd shape box (boolToCBool useTriangulation)
+
+foreign import capi unsafe "hs_BRepBndLib.h hs_BRepBndLib_addOptimal" rawAddOptimal ::  Ptr Shape -> Ptr Box -> CBool -> CBool -> IO ()
+
+addOptimal :: Ptr Shape  -> Ptr Box -> Bool -- ^ useTriangulation
+    -> Bool -- ^ useShapeTolerance
+    -> IO ()
+addOptimal shape box useTriangulation useShapeTolerance = 
+    rawAddOptimal shape box (boolToCBool useTriangulation) (boolToCBool useShapeTolerance)
+
+foreign import capi unsafe "hs_BRepBndLib.h hs_BRepBndLib_addOBB" rawAddOBB ::  Ptr Shape -> Ptr OBB -> CBool -> CBool -> CBool -> IO ()
+
+addOBB :: Ptr Shape -> Ptr OBB -> Bool -- ^ isTriangulation used
+    -> Bool -- ^ isOptimal
+    -> Bool -- ^ is ShapeToleranceUsed
+    -> IO ()
+addOBB shape obb triangulationUsed optimal shapeToleranceUsed = 
+    rawAddOBB shape obb (boolToCBool triangulationUsed) (boolToCBool optimal) (boolToCBool shapeToleranceUsed)
diff --git a/src/OpenCascade/BRepBuilderAPI/Internal/Destructors.hs b/src/OpenCascade/BRepBuilderAPI/Internal/Destructors.hs
--- a/src/OpenCascade/BRepBuilderAPI/Internal/Destructors.hs
+++ b/src/OpenCascade/BRepBuilderAPI/Internal/Destructors.hs
@@ -1,5 +1,9 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.BRepBuilderAPI.Internal.Destructors where
+module OpenCascade.BRepBuilderAPI.Internal.Destructors
+( deleteMakeWire
+, deleteMakeFace
+, deleteMakeSolid
+) where
 
 import OpenCascade.BRepBuilderAPI.Types
 
diff --git a/src/OpenCascade/BRepBuilderAPI/Types.hs b/src/OpenCascade/BRepBuilderAPI/Types.hs
--- a/src/OpenCascade/BRepBuilderAPI/Types.hs
+++ b/src/OpenCascade/BRepBuilderAPI/Types.hs
@@ -1,6 +1,11 @@
 {-# LANGUAGE MultiParamTypeClasses #-} 
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.BRepBuilderAPI.Types where
+module OpenCascade.BRepBuilderAPI.Types 
+( MakeWire
+, MakeFace
+, MakeSolid
+, MakeShape
+) where
 
 import qualified OpenCascade.Inheritance as Inheritance
 
diff --git a/src/OpenCascade/BRepFilletAPI/Internal/Destructors.hs b/src/OpenCascade/BRepFilletAPI/Internal/Destructors.hs
--- a/src/OpenCascade/BRepFilletAPI/Internal/Destructors.hs
+++ b/src/OpenCascade/BRepFilletAPI/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.BRepFilletAPI.Internal.Destructors where
+module OpenCascade.BRepFilletAPI.Internal.Destructors
+( deleteMakeFillet
+) where
 
 import OpenCascade.BRepFilletAPI.Types
 
diff --git a/src/OpenCascade/BRepGProp.hs b/src/OpenCascade/BRepGProp.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/BRepGProp.hs
@@ -0,0 +1,15 @@
+{-# LANGUAGE CApiFFI #-}
+module OpenCascade.BRepGProp (volumeProperties) where
+
+import OpenCascade.TopoDS.Types (Shape)
+import OpenCascade.GProp.Types (GProps)
+import Foreign.Ptr (Ptr)
+import Foreign.C (CBool (..))
+import OpenCascade.Internal.Bool (boolToCBool)
+
+foreign import capi unsafe "hs_BRepGProp.h hs_BRepGProp_VolumeProperties" rawVolumeProperties :: Ptr Shape -> Ptr GProps -> CBool -> CBool -> CBool -> IO ()
+
+volumeProperties :: Ptr Shape -> Ptr GProps -> Bool -> Bool -> Bool -> IO ()
+volumeProperties shape props onlyClosed skipShared useTriangulation =
+    rawVolumeProperties shape props (boolToCBool onlyClosed) (boolToCBool skipShared) (boolToCBool useTriangulation)
+ 
diff --git a/src/OpenCascade/BRepMesh/Internal/Destructors.hs b/src/OpenCascade/BRepMesh/Internal/Destructors.hs
--- a/src/OpenCascade/BRepMesh/Internal/Destructors.hs
+++ b/src/OpenCascade/BRepMesh/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.BRepMesh.Internal.Destructors where
+module OpenCascade.BRepMesh.Internal.Destructors 
+( deleteIncrementalMesh
+) where
 
 import OpenCascade.BRepMesh.Types
 
diff --git a/src/OpenCascade/BRepMesh/Types.hs b/src/OpenCascade/BRepMesh/Types.hs
--- a/src/OpenCascade/BRepMesh/Types.hs
+++ b/src/OpenCascade/BRepMesh/Types.hs
@@ -1,4 +1,6 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.BRepMesh.Types where
+module OpenCascade.BRepMesh.Types 
+( IncrementalMesh
+) where
 
 data IncrementalMesh
diff --git a/src/OpenCascade/BRepOffsetAPI/Internal/Destructors.hs b/src/OpenCascade/BRepOffsetAPI/Internal/Destructors.hs
--- a/src/OpenCascade/BRepOffsetAPI/Internal/Destructors.hs
+++ b/src/OpenCascade/BRepOffsetAPI/Internal/Destructors.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.BRepOffsetAPI.Internal.Destructors where
+module OpenCascade.BRepOffsetAPI.Internal.Destructors
+( deleteMakePipe
+, deleteMakeOffsetShape
+) where
 
 import OpenCascade.BRepOffsetAPI.Types
 
diff --git a/src/OpenCascade/BRepPrimAPI/Internal/Destructors.hs b/src/OpenCascade/BRepPrimAPI/Internal/Destructors.hs
--- a/src/OpenCascade/BRepPrimAPI/Internal/Destructors.hs
+++ b/src/OpenCascade/BRepPrimAPI/Internal/Destructors.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.BRepPrimAPI.Internal.Destructors where
+module OpenCascade.BRepPrimAPI.Internal.Destructors 
+( deleteMakeBox
+, deleteMakeRevol
+) where
 
 import OpenCascade.BRepPrimAPI.Types
 
diff --git a/src/OpenCascade/BRepTools/Internal/Destructors.hs b/src/OpenCascade/BRepTools/Internal/Destructors.hs
--- a/src/OpenCascade/BRepTools/Internal/Destructors.hs
+++ b/src/OpenCascade/BRepTools/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.BRepTools.Internal.Destructors where
+module OpenCascade.BRepTools.Internal.Destructors
+( deleteWireExplorer
+) where
 
 import OpenCascade.BRepTools.Types
 
diff --git a/src/OpenCascade/BRepTools/Types.hs b/src/OpenCascade/BRepTools/Types.hs
--- a/src/OpenCascade/BRepTools/Types.hs
+++ b/src/OpenCascade/BRepTools/Types.hs
@@ -1,4 +1,6 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.BRepTools.Types where
+module OpenCascade.BRepTools.Types 
+( WireExplorer
+) where
 
 data WireExplorer
diff --git a/src/OpenCascade/Bnd/Box.hs b/src/OpenCascade/Bnd/Box.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/Bnd/Box.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE CApiFFI #-}
+module OpenCascade.Bnd.Box
+( Box
+, new
+, cornerMin
+, cornerMax
+) where
+
+import OpenCascade.Bnd.Types
+import OpenCascade.Bnd.Internal.Destructors (deleteBox)
+import OpenCascade.GP.Types (Pnt)
+import OpenCascade.GP.Internal.Destructors (deletePnt)
+import Data.Acquire (Acquire, mkAcquire)
+import Foreign.Ptr (Ptr)
+
+foreign import capi unsafe "hs_Bnd_Box.h hs_new_Bnd_Box" rawNew ::  IO (Ptr Box)
+
+new :: Acquire (Ptr Box)
+new = mkAcquire rawNew deleteBox
+
+foreign import capi unsafe "hs_Bnd_Box.h hs_Bnd_Box_cornerMin" rawCornerMin :: Ptr Box -> IO (Ptr Pnt)
+
+cornerMin :: Ptr Box -> Acquire (Ptr Pnt)
+cornerMin box = mkAcquire (rawCornerMin box) deletePnt
+
+foreign import capi unsafe "hs_Bnd_Box.h hs_Bnd_Box_cornerMax" rawCornerMax :: Ptr Box -> IO (Ptr Pnt)
+
+cornerMax :: Ptr Box -> Acquire (Ptr Pnt)
+cornerMax box = mkAcquire (rawCornerMax box) deletePnt
diff --git a/src/OpenCascade/Bnd/Internal/Destructors.hs b/src/OpenCascade/Bnd/Internal/Destructors.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/Bnd/Internal/Destructors.hs
@@ -0,0 +1,11 @@
+{-# LANGUAGE CApiFFI #-}
+module OpenCascade.Bnd.Internal.Destructors 
+( deleteBox
+, deleteOBB
+) where
+
+import Foreign.Ptr
+import OpenCascade.Bnd.Types 
+
+foreign import capi unsafe "hs_Bnd_Box.h hs_delete_Bnd_Box" deleteBox :: Ptr Box -> IO ()
+foreign import capi unsafe "hs_Bnd_OBB.h hs_delete_Bnd_OBB" deleteOBB :: Ptr OBB -> IO ()
diff --git a/src/OpenCascade/Bnd/OBB.hs b/src/OpenCascade/Bnd/OBB.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/Bnd/OBB.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE CApiFFI #-}
+module OpenCascade.Bnd.OBB
+( OBB
+, new
+, center
+, xDirection, yDirection, zDirection
+, xHSize, yHSize, zHSize
+, position
+) where
+
+import OpenCascade.Bnd.Types
+import OpenCascade.Bnd.Internal.Destructors (deleteOBB)
+import OpenCascade.GP.Types (XYZ, Ax3)
+import OpenCascade.GP.Internal.Destructors (deleteXYZ, deleteAx3)
+import Data.Acquire (Acquire, mkAcquire)
+import Foreign.Ptr (Ptr)
+import Foreign.C (CDouble (..))
+import Data.Coerce (coerce)
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_new_Bnd_OBB" rawNew ::  IO (Ptr OBB)
+
+new :: Acquire (Ptr OBB)
+new = mkAcquire rawNew deleteOBB
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_center" rawCenter :: Ptr OBB -> IO (Ptr XYZ)
+
+center :: Ptr OBB -> Acquire (Ptr XYZ)
+center obb = mkAcquire (rawCenter obb) deleteXYZ
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_xDirection" rawXDirection :: Ptr OBB -> IO (Ptr XYZ)
+
+xDirection :: Ptr OBB -> Acquire (Ptr XYZ)
+xDirection obb = mkAcquire (rawXDirection obb) deleteXYZ
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_yDirection" rawYDirection :: Ptr OBB -> IO (Ptr XYZ)
+
+yDirection :: Ptr OBB -> Acquire (Ptr XYZ)
+yDirection obb = mkAcquire (rawYDirection obb) deleteXYZ
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_zDirection" rawZDirection :: Ptr OBB -> IO (Ptr XYZ)
+
+zDirection :: Ptr OBB -> Acquire (Ptr XYZ)
+zDirection obb = mkAcquire (rawZDirection obb) deleteXYZ
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_xHSize" rawXHSize :: Ptr OBB -> IO (CDouble)
+
+xHSize :: Ptr OBB -> IO Double 
+xHSize = coerce rawXHSize
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_yHSize" rawYHSize :: Ptr OBB -> IO (CDouble)
+
+yHSize :: Ptr OBB -> IO Double 
+yHSize = coerce rawYHSize
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_zHSize" rawZHSize :: Ptr OBB -> IO (CDouble)
+
+zHSize :: Ptr OBB -> IO Double 
+zHSize = coerce rawZHSize 
+
+foreign import capi unsafe "hs_Bnd_OBB.h hs_Bnd_OBB_position" rawPosition :: Ptr OBB -> IO (Ptr Ax3)
+
+position :: Ptr OBB -> Acquire (Ptr Ax3)
+position obb = mkAcquire (rawPosition obb) deleteAx3
diff --git a/src/OpenCascade/Bnd/Types.hs b/src/OpenCascade/Bnd/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/Bnd/Types.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE EmptyDataDecls #-}
+module OpenCascade.Bnd.Types
+( Box
+, OBB
+) where
+
+data Box
+data OBB
diff --git a/src/OpenCascade/Font/Internal/Destructors.hs b/src/OpenCascade/Font/Internal/Destructors.hs
--- a/src/OpenCascade/Font/Internal/Destructors.hs
+++ b/src/OpenCascade/Font/Internal/Destructors.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.Font.Internal.Destructors where
+module OpenCascade.Font.Internal.Destructors
+( deleteBRepFont
+, deleteBRepTextBuilder
+) where
 
 
 import OpenCascade.Font.Types
diff --git a/src/OpenCascade/Font/Types.hs b/src/OpenCascade/Font/Types.hs
--- a/src/OpenCascade/Font/Types.hs
+++ b/src/OpenCascade/Font/Types.hs
@@ -1,5 +1,8 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.Font.Types where
+module OpenCascade.Font.Types 
+( BRepFont
+, BRepTextBuilder
+) where
 
 data BRepFont
 data BRepTextBuilder 
diff --git a/src/OpenCascade/GP/Internal/Destructors.hs b/src/OpenCascade/GP/Internal/Destructors.hs
--- a/src/OpenCascade/GP/Internal/Destructors.hs
+++ b/src/OpenCascade/GP/Internal/Destructors.hs
@@ -1,5 +1,20 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.GP.Internal.Destructors where
+module OpenCascade.GP.Internal.Destructors
+( deletePnt
+, deletePnt2d
+, deleteAx1
+, deleteAx2
+, deleteAx2d
+, deleteAx3
+, deleteDir
+, deleteDir2d
+, deleteVec
+, deleteVec2d
+, deleteTrsf
+, deleteTrsf2d
+, deleteGTrsf
+, deleteXYZ
+) where
 
 import OpenCascade.GP.Types
 
@@ -18,4 +33,5 @@
 foreign import capi unsafe "hs_gp_Trsf.h hs_delete_gp_Trsf" deleteTrsf :: Ptr Trsf -> IO ()
 foreign import capi unsafe "hs_gp_GTrsf.h hs_delete_gp_GTrsf" deleteGTrsf :: Ptr GTrsf -> IO ()
 foreign import capi unsafe "hs_gp_Trsf2d.h hs_delete_gp_Trsf2d" deleteTrsf2d :: Ptr Trsf2d -> IO ()
+foreign import capi unsafe "hs_gp_XYZ.h hs_delete_gp_XYZ" deleteXYZ :: Ptr XYZ -> IO ()
 
diff --git a/src/OpenCascade/GP/Trsf.hs b/src/OpenCascade/GP/Trsf.hs
--- a/src/OpenCascade/GP/Trsf.hs
+++ b/src/OpenCascade/GP/Trsf.hs
@@ -9,6 +9,7 @@
 , setRotationAboutAxisAngle
 , setScale
 , setTranslation
+, setDisplacement
 , setScaleFactor
 , setTranslationPart
 , setValues
@@ -71,6 +72,10 @@
 foreign import capi unsafe "hs_gp_Trsf.h hs_gp_Trsf_SetTranslation" setTranslation :: Ptr Trsf -> Ptr Vec -> IO ()
 
 foreign import capi unsafe "hs_gp_Trsf.h hs_gp_Trsf_SetTranslationPart" setTranslationPart :: Ptr Trsf -> Ptr Vec -> IO ()
+
+-- setDisplacement
+
+foreign import capi unsafe "hs_gp_Trsf.h hs_gp_Trsf_SetDisplacement" setDisplacement :: Ptr Trsf -> Ptr Ax3 -> Ptr Ax3 -> IO ()
 
 -- scaleFactor
 
diff --git a/src/OpenCascade/GP/Types.hs b/src/OpenCascade/GP/Types.hs
--- a/src/OpenCascade/GP/Types.hs
+++ b/src/OpenCascade/GP/Types.hs
@@ -1,5 +1,20 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.GP.Types where
+module OpenCascade.GP.Types
+( Pnt
+, Pnt2d
+, Ax1
+, Ax2
+, Ax2d
+, Ax3
+, Dir
+, Dir2d
+, Vec
+, Vec2d
+, Trsf
+, Trsf2d
+, GTrsf
+, XYZ
+) where
 
 data Pnt
 data Pnt2d
@@ -14,4 +29,4 @@
 data Trsf
 data Trsf2d
 data GTrsf
-
+data XYZ
diff --git a/src/OpenCascade/GP/XYZ.hs b/src/OpenCascade/GP/XYZ.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/GP/XYZ.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE CApiFFI #-}
+module OpenCascade.GP.XYZ 
+( XYZ
+, newXYZ
+, fromDoubles
+, setX, setY, setZ
+, x, y, z
+) where
+
+import OpenCascade.GP.Types (XYZ)
+import OpenCascade.GP.Internal.Destructors (deleteXYZ)
+import Foreign.Ptr (Ptr)
+import Foreign.C (CDouble (..))
+import Data.Acquire (Acquire, mkAcquire)
+import Data.Coerce (coerce)
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_new_gp_XYZ" rawNewXYZ :: IO (Ptr XYZ)
+
+newXYZ :: Acquire (Ptr XYZ)
+newXYZ = mkAcquire rawNewXYZ deleteXYZ
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_new_gp_XYZ_fromDoubles" rawFromDoubles :: CDouble -> CDouble -> CDouble -> IO (Ptr XYZ)
+
+fromDoubles :: Double -> Double -> Double -> Acquire (Ptr XYZ)
+fromDoubles x' y' z' = mkAcquire ((coerce rawFromDoubles) x' y' z') (deleteXYZ)
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setX" rawSetX :: Ptr XYZ -> CDouble -> IO ()
+
+setX :: Ptr XYZ -> Double -> IO ()
+setX = coerce  rawSetX
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setY" rawSetY :: Ptr XYZ -> CDouble -> IO ()
+
+setY :: Ptr XYZ -> Double -> IO ()
+setY = coerce  rawSetY
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_setZ" rawSetZ :: Ptr XYZ -> CDouble -> IO ()
+
+setZ :: Ptr XYZ -> Double -> IO ()
+setZ = coerce rawSetZ
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_x" rawX :: Ptr XYZ -> IO (CDouble)
+
+x :: Ptr XYZ -> IO Double
+x = coerce rawX
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_y" rawY :: Ptr XYZ -> IO (CDouble)
+
+y:: Ptr XYZ -> IO Double
+y = coerce rawY
+
+foreign import capi unsafe "hs_gp_XYZ.h hs_gp_XYZ_z" rawZ :: Ptr XYZ -> IO (CDouble)
+
+z :: Ptr XYZ -> IO Double
+z = coerce rawZ
diff --git a/src/OpenCascade/GProp/GProps.hs b/src/OpenCascade/GProp/GProps.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/GProp/GProps.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE CApiFFI #-}
+module OpenCascade.GProp.GProps
+( GProps
+, new
+, fromSystemLocation
+, mass
+, centreOfMass
+, momentOfInertia
+) where
+
+import Foreign.Ptr (Ptr)
+import Foreign.C (CDouble (..))
+import OpenCascade.GProp.Types (GProps)
+import OpenCascade.GProp.Internal.Destructors (deleteGProps)
+import OpenCascade.GP.Types (Pnt, Ax1)
+import OpenCascade.GP.Internal.Destructors (deletePnt)
+import Data.Acquire 
+import Data.Coerce (coerce)
+
+foreign import capi unsafe "hs_GProp_GProps.h hs_new_GProp_GProps" rawNew :: IO (Ptr GProps)
+
+new :: Acquire (Ptr GProps)
+new = mkAcquire rawNew deleteGProps
+
+foreign import capi unsafe "hs_GProp_GProps.h hs_new_GProp_GProps" rawFromSystemLocation :: Ptr Pnt -> IO (Ptr GProps)
+
+fromSystemLocation :: Ptr Pnt -> Acquire (Ptr GProps)
+fromSystemLocation pnt = mkAcquire (rawFromSystemLocation pnt) deleteGProps
+
+foreign import capi unsafe "hs_GProp_GProps.h hs_GProp_GProps_mass" rawMass :: Ptr GProps -> IO CDouble 
+
+mass :: Ptr GProps -> IO Double
+mass = coerce rawMass
+
+foreign import capi unsafe "hs_GProp_GProps.h hs_GProp_GProps_centreOfMass" rawCentreOfMass :: Ptr GProps -> IO (Ptr Pnt)
+
+centreOfMass :: Ptr GProps -> Acquire (Ptr Pnt)
+centreOfMass gProps = mkAcquire (rawCentreOfMass gProps) deletePnt
+
+foreign import capi unsafe "hs_GProp_GProps.h hs_GProp_GProps_momentOfInertia" rawMomentOfIntertia :: Ptr GProps -> Ptr Ax1 -> IO CDouble 
+
+momentOfInertia :: Ptr GProps -> Ptr Ax1 -> IO Double
+momentOfInertia = coerce rawMomentOfIntertia
diff --git a/src/OpenCascade/GProp/Internal/Destructors.hs b/src/OpenCascade/GProp/Internal/Destructors.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/GProp/Internal/Destructors.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE CApiFFI #-}
+module OpenCascade.GProp.Internal.Destructors 
+( deleteGProps
+) where
+
+import OpenCascade.GProp.Types
+
+import Foreign.Ptr (Ptr)
+
+foreign import capi unsafe "hs_GProp_GProps.h hs_delete_GProp_GProps" deleteGProps :: Ptr GProps-> IO ()
diff --git a/src/OpenCascade/GProp/Types.hs b/src/OpenCascade/GProp/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/OpenCascade/GProp/Types.hs
@@ -0,0 +1,6 @@
+{-# LANGUAGE EmptyDataDecls #-}
+module OpenCascade.GProp.Types
+( GProps
+) where
+
+data GProps
diff --git a/src/OpenCascade/Geom/Internal/Destructors.hs b/src/OpenCascade/Geom/Internal/Destructors.hs
--- a/src/OpenCascade/Geom/Internal/Destructors.hs
+++ b/src/OpenCascade/Geom/Internal/Destructors.hs
@@ -1,5 +1,10 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.Geom.Internal.Destructors where
+module OpenCascade.Geom.Internal.Destructors 
+( deleteHandleCurve
+, deleteHandleTrimmedCurve
+, deleteHandleBezierCurve
+, deleteBezierCurve
+) where
 
 import OpenCascade.Geom.Types
 
diff --git a/src/OpenCascade/NCollection/Internal/Destructors.hs b/src/OpenCascade/NCollection/Internal/Destructors.hs
--- a/src/OpenCascade/NCollection/Internal/Destructors.hs
+++ b/src/OpenCascade/NCollection/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.NCollection.Internal.Destructors where
+module OpenCascade.NCollection.Internal.Destructors
+( deletePntArray
+) where
 
 import OpenCascade.NCollection.Types
 import OpenCascade.GP.Types
diff --git a/src/OpenCascade/NCollection/Types.hs b/src/OpenCascade/NCollection/Types.hs
--- a/src/OpenCascade/NCollection/Types.hs
+++ b/src/OpenCascade/NCollection/Types.hs
@@ -1,4 +1,6 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.NCollection.Types where
+module OpenCascade.NCollection.Types 
+( Array1
+) where
 
 data Array1 a
diff --git a/src/OpenCascade/STEPControl/Internal/Destructors.hs b/src/OpenCascade/STEPControl/Internal/Destructors.hs
--- a/src/OpenCascade/STEPControl/Internal/Destructors.hs
+++ b/src/OpenCascade/STEPControl/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.STEPControl.Internal.Destructors where
+module OpenCascade.STEPControl.Internal.Destructors 
+( deleteWriter
+) where
 
 import OpenCascade.STEPControl.Types
 
diff --git a/src/OpenCascade/STEPControl/Types.hs b/src/OpenCascade/STEPControl/Types.hs
--- a/src/OpenCascade/STEPControl/Types.hs
+++ b/src/OpenCascade/STEPControl/Types.hs
@@ -1,4 +1,6 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.STEPControl.Types where
+module OpenCascade.STEPControl.Types
+( Writer
+) where
 
 data Writer
diff --git a/src/OpenCascade/StlAPI/Internal/Destructors.hs b/src/OpenCascade/StlAPI/Internal/Destructors.hs
--- a/src/OpenCascade/StlAPI/Internal/Destructors.hs
+++ b/src/OpenCascade/StlAPI/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.StlAPI.Internal.Destructors where
+module OpenCascade.StlAPI.Internal.Destructors 
+( deleteWriter
+) where
 
 import OpenCascade.StlAPI.Types
 
diff --git a/src/OpenCascade/StlAPI/Types.hs b/src/OpenCascade/StlAPI/Types.hs
--- a/src/OpenCascade/StlAPI/Types.hs
+++ b/src/OpenCascade/StlAPI/Types.hs
@@ -1,5 +1,7 @@
 
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.StlAPI.Types where
+module OpenCascade.StlAPI.Types 
+( Writer
+) where
 
 data Writer
diff --git a/src/OpenCascade/TopExp/Internal/Destructors.hs b/src/OpenCascade/TopExp/Internal/Destructors.hs
--- a/src/OpenCascade/TopExp/Internal/Destructors.hs
+++ b/src/OpenCascade/TopExp/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.TopExp.Internal.Destructors where
+module OpenCascade.TopExp.Internal.Destructors 
+( deleteExplorer
+) where
 
 import OpenCascade.TopExp.Types
 
diff --git a/src/OpenCascade/TopExp/Types.hs b/src/OpenCascade/TopExp/Types.hs
--- a/src/OpenCascade/TopExp/Types.hs
+++ b/src/OpenCascade/TopExp/Types.hs
@@ -1,4 +1,6 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.TopExp.Types where
+module OpenCascade.TopExp.Types 
+( Explorer
+) where
 
 data Explorer
diff --git a/src/OpenCascade/TopLoc/Internal/Destructors.hs b/src/OpenCascade/TopLoc/Internal/Destructors.hs
--- a/src/OpenCascade/TopLoc/Internal/Destructors.hs
+++ b/src/OpenCascade/TopLoc/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.TopLoc.Internal.Destructors where
+module OpenCascade.TopLoc.Internal.Destructors
+( deleteLocation
+) where
 
 import OpenCascade.TopLoc.Types
 
diff --git a/src/OpenCascade/TopLoc/Types.hs b/src/OpenCascade/TopLoc/Types.hs
--- a/src/OpenCascade/TopLoc/Types.hs
+++ b/src/OpenCascade/TopLoc/Types.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.TopLoc.Types where
+module OpenCascade.TopLoc.Types 
+( Location
+) where
 
 data Location
 
diff --git a/src/OpenCascade/TopTools/Types.hs b/src/OpenCascade/TopTools/Types.hs
--- a/src/OpenCascade/TopTools/Types.hs
+++ b/src/OpenCascade/TopTools/Types.hs
@@ -1,4 +1,6 @@
 {-# LANGUAGE EmptyDataDecls #-}
-module OpenCascade.TopTools.Types where
+module OpenCascade.TopTools.Types 
+( ListOfShape
+) where
 
 data ListOfShape
diff --git a/src/OpenCascade/TopoDS/Internal/Destructors.hs b/src/OpenCascade/TopoDS/Internal/Destructors.hs
--- a/src/OpenCascade/TopoDS/Internal/Destructors.hs
+++ b/src/OpenCascade/TopoDS/Internal/Destructors.hs
@@ -1,5 +1,7 @@
 {-# LANGUAGE CApiFFI #-}
-module OpenCascade.TopoDS.Internal.Destructors where
+module OpenCascade.TopoDS.Internal.Destructors 
+( deleteShape
+) where
 
 import OpenCascade.TopoDS.Types
 
