diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000000000000000000000000000000000000..523902ae46b58a1345f8fb9541aa9d2c4c3b5f0b
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,2 @@
+global-include *.pyx
+global-include *.c
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 49a0cbe63f7f7b5a2b7c394498f9553cc3f37852..10d05b652d824c3929a8059c07d9e4175b1c0775 100644
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,4 @@
-from setuptools import setup
+from setuptools import setup, find_packages
 from distutils.core import Extension
 import numpy
 import sys
@@ -12,42 +12,31 @@ except ImportError:
 else:
     USE_CYTHON = True
 
+ext = '.pyx' if USE_CYTHON else '.c'
+extension_args = {'language': 'c',
+                  'extra_compile_args': ['-fopenmp'],
+                  'extra_link_args': ['-lomp'],
+                  'libraries': cython_gsl.get_libraries(),
+                  'library_dirs': [cython_gsl.get_library_dir(),
+                                   '/usr/local/lib',
+                                   os.path.join(sys.prefix, 'lib')],
+                  'include_dirs': [numpy.get_include(),
+                                   cython_gsl.get_cython_include_dir(),
+                                   os.path.join(sys.prefix, 'include')],
+                  'define_macros': [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")]}
+
+extensions = [Extension(name='pyrost.bin.beam_calc',
+                        sources=['pyrost/bin/beam_calc' + ext], **extension_args),
+              Extension(name='pyrost.bin.st_utils',
+                        sources=['pyrost/bin/st_utils' + ext], **extension_args)]
+
 if USE_CYTHON:
-    extensions = [Extension(name='beam_calc',
-                            sources=["pyrost/bin/beam_calc.pyx"],
-                            language="c",
-                            extra_compile_args=['-fopenmp'],
-                            extra_link_args=['-lomp'],
-                            libraries=cython_gsl.get_libraries(),
-                            library_dirs=[cython_gsl.get_library_dir(), '/usr/local/lib',
-                                          os.path.join(sys.prefix, 'lib')],
-                            include_dirs=[numpy.get_include(),
-                                          cython_gsl.get_cython_include_dir(),
-                                          os.path.join(sys.prefix, 'include')],
-                            define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")]),
-                  Extension(name='st_utils',
-                            sources=["pyrost/bin/st_utils.pyx"],
-                            language="c",
-                            extra_compile_args=['-fopenmp'],
-                            extra_link_args=['-lomp'],
-                            libraries=cython_gsl.get_libraries(),
-                            library_dirs=[cython_gsl.get_library_dir(), '/usr/local/lib',
-                                          os.path.join(sys.prefix, 'lib')],
-                            include_dirs=[numpy.get_include(),
-                                          cython_gsl.get_cython_include_dir(),
-                                          os.path.join(sys.prefix, 'include')],
-                            define_macros=[("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")])]
     extensions = cythonize(extensions, annotate=False, language_level="3",
-                           build_dir="build",
                            compiler_directives={'cdivision': True,
                                                 'boundscheck': False,
                                                 'wraparound': False,
                                                 'binding': True,
                                                 'embedsignature': True})
-else:
-    extensions = [Extension(name="pyrost/bin/*",
-                            sources=["pyrost/bin/*.c"],
-                            include_dirs=[numpy.get_include()])]
 
 with open('README.md', 'r') as readme:
     long_description = readme.read()
@@ -59,13 +48,10 @@ setup(name='pyrost',
       long_description=long_description,
       long_description_content_type='text/markdown',
       url="https://github.com/simply-nicky/rst",
-      install_requires=[
-          'Cython',
-          'CythonGSL',
-          'h5py',
-          'numpy',
-          'scipy',
-      ],
+      packages=find_packages(),
+      include_package_data=True,
+      package_data={'pyrost.bin': ['*.pyx']},
+      install_requires=['Cython', 'CythonGSL', 'h5py', 'numpy', 'scipy',],
       extras_require={'interactive': ['matplotlib', 'jupyter', 'pyximport']},
       setup_requires=['pytest-runner'],
       tests_require=['pytest'],
@@ -75,5 +61,4 @@ setup(name='pyrost',
           "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
           "Operating System :: OS Independent"
       ],
-      python_requires='>=3.7',
-      options={'build': {'build_lib': 'pyrost/bin'}})
+      python_requires='>=3.7')