diff --git a/setup.py b/setup.py
index 937d063bc0d9728b777a25af59e6f5d1e1a8a235..8b194f67980b4f05e23cca6048b4d7b545617ea5 100644
--- a/setup.py
+++ b/setup.py
@@ -1,12 +1,3 @@
-# -*- coding: utf-8 -*-
-"""
-    Setup file for pyronn_torch.
-    Use setup.cfg to configure your project.
-
-    This file was generated with PyScaffold 3.2.3.
-    PyScaffold helps you to put up the scaffold of your new Python project.
-    Learn more under: https://pyscaffold.org/
-"""
 import sys
 
 from pkg_resources import VersionConflict, require
diff --git a/src/pyronn_torch/codegen.py b/src/pyronn_torch/codegen.py
index 0021721409ecd6dbfaf0c7eccdb4653ecee79c04..4783c709dd5126bff458968dcb9b9fbce6636e62 100644
--- a/src/pyronn_torch/codegen.py
+++ b/src/pyronn_torch/codegen.py
@@ -170,8 +170,7 @@ def generate_shared_object(output_folder=None, source_files=None, show_code=Fals
         copyfile(s, dst)  # Torch only accepts *.cu as CUDA
         cuda_sources.append(dst)
 
-    functions = [WrapperFunction(Block([v]), function_name=k) for k, v in FUNCTIONS.items()]
-    module = TorchModule(module_name, functions, wrap_wrapper_functions=True)
+    module = TorchModule(module_name, FUNCTIONS.values())
 
     if show_code:
         pystencils.show_code(module, custom_backend=FrameworkIntegrationPrinter())
@@ -183,7 +182,9 @@ def generate_shared_object(output_folder=None, source_files=None, show_code=Fals
 
     shared_object_file = module.compiled_file
     copyfile(shared_object_file, join(output_folder, module_name + '.so'))
-    copyfile(module.compiled_file, join(output_folder, 'pyronn_torch.cpp'))
+    if show_code:
+        with open(join(output_folder, 'pyronn_torch.cpp'), 'w') as f:
+            f.write(pystencils.get_code_str(module, custom_backend=FrameworkIntegrationPrinter()))
 
     return extension
 
diff --git a/src/pyronn_torch/conebeam.py b/src/pyronn_torch/conebeam.py
index ffc2479b1177ef03128085662f42555bf1bc5297..09e4f4073a4b64806251d2c10d1573de71403d42 100644
--- a/src/pyronn_torch/conebeam.py
+++ b/src/pyronn_torch/conebeam.py
@@ -47,7 +47,7 @@ class ConeBeamProjector:
                     self.source_points,
                     self.step_size,
                     volume,
-                    *reversed(self.volume_spacing))
+                    *self.volume_spacing)
             else:
                 pyronn_torch.cpp_extension.call_Cone_Projection_Kernel_Launcher(
                     self.inverse_matrices,
@@ -55,7 +55,7 @@ class ConeBeamProjector:
                     self.source_points,
                     self.step_size,
                     volume,
-                    *reversed(self.volume_spacing))
+                    *self.volume_spacing)
 
             return projection,
 
@@ -70,8 +70,8 @@ class ConeBeamProjector:
                 projection_grad,
                 self.projection_multiplier,
                 volume_grad,
-                *reversed(self.volume_origin),
-                *reversed(self.volume_spacing))
+                self.volume_origin,
+                self.volume_spacing)
 
             return volume_grad,
 
@@ -142,7 +142,7 @@ class ConeBeamProjector:
         if self._projection_matrices_numpy is None:
             return
         self._projection_matrices = torch.stack(tuple(
-            map(torch.from_numpy, self._projection_matrices_numpy))).cuda().contiguous()
+            map(torch.from_numpy, self._projection_matrices_numpy))).cpu().contiguous()
 
         inv_spacing = np.array([1/s for s in reversed(self._volume_spacing)], np.float32)
 
@@ -154,6 +154,6 @@ class ConeBeamProjector:
         inv_matrices = map(lambda x: (np.linalg.inv(x[:3, :3]) *
                                       inv_spacing).astype(np.float32), self._projection_matrices_numpy)
 
-        self._inverse_matrices = torch.stack(tuple(map(torch.from_numpy, inv_matrices))).cuda().contiguous()
-        self._source_points = torch.stack(tuple(map(torch.from_numpy, source_points))).cuda().contiguous()
+        self._inverse_matrices = torch.stack(tuple(map(torch.from_numpy, inv_matrices))).cpu().contiguous()
+        self._source_points = torch.stack(tuple(map(torch.from_numpy, source_points))).cpu().contiguous()
         self._projection_multiplier = 1.
diff --git a/src/pyronn_torch/pyronn_torch.cpp b/src/pyronn_torch/pyronn_torch.cpp
index e5defe1b03e85dd5e509bafb5dc48d231a72a526..411ee34186bfd8d9312547d27722a5d88f79cf4d 100644
Binary files a/src/pyronn_torch/pyronn_torch.cpp and b/src/pyronn_torch/pyronn_torch.cpp differ