diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..db1f59809e0825b7d6a7d1e80a2801e84f87d5a1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,100 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+
diff --git a/alignment/convert_reads.py b/alignment/convert_reads.py
index 7d57c88b6e38ddf160c1ffae3095aeddc8d0f84d..72e5d98cb2432743ff43d2c287a1a1e8bf2309fd 100644
--- a/alignment/convert_reads.py
+++ b/alignment/convert_reads.py
@@ -9,9 +9,7 @@ import subprocess
 import shlex
 import logging
 from multiprocessing import cpu_count
-import sys
-sys.path.append(os.path.abspath('../python_utils'))
-import utils
+from python_utils import utils
 
 EPILOG = '''
 For more details:
diff --git a/alignment/map_qc.py b/alignment/map_qc.py
index 7959973adffb8443b8cb9c0d99846b84d260aeff..5bb74f0e01151ce0ccd662dcb425f7ce006360ed 100644
--- a/alignment/map_qc.py
+++ b/alignment/map_qc.py
@@ -9,10 +9,8 @@ import shutil
 import shlex
 import logging
 from multiprocessing import cpu_count
-import sys
 import pandas as pd
-sys.path.append(os.path.abspath('../python_utils'))
-import utils
+from python_utils import utils
 
 
 EPILOG = '''
diff --git a/alignment/map_reads.py b/alignment/map_reads.py
index 80f47089353b89f5b45a45ab5315440446c2c652..877c7c7ec52e7d003d865fd97f44c83324c25018 100644
--- a/alignment/map_reads.py
+++ b/alignment/map_reads.py
@@ -9,9 +9,7 @@ import shutil
 import shlex
 import logging
 from multiprocessing import cpu_count
-import sys
-sys.path.append(os.path.abspath('../python_utils'))
-import utils
+from python_utils import utils
 
 EPILOG = '''
 For more details:
diff --git a/call_peaks/call_peaks_macs.py b/call_peaks/call_peaks_macs.py
index 154bdc668b95a854fb887702df30d4d6375a1565..8b13b3b18d2e53405072da238f9a680eeca21d33 100644
--- a/call_peaks/call_peaks_macs.py
+++ b/call_peaks/call_peaks_macs.py
@@ -7,11 +7,8 @@ import argparse
 import shutil
 import logging
 from multiprocessing import cpu_count
-import sys
-sys.path.append(os.path.abspath('../python_utils'))
-import utils
-sys.path.append(os.path.abspath('../cross_correlation'))
-from xcor import xcor as calculate_xcor
+from python_utils import utils
+from quality_metrics.xcor import xcor as calculate_xcor
 
 EPILOG = '''
 For more details:
diff --git a/call_peaks/overlap_peaks.py b/call_peaks/overlap_peaks.py
index 9bfd19c8edf5ddb8022009dcf555c4eb7390c31f..3687eb706f3c338f45c644aa65b41c29f6eb1f85 100644
--- a/call_peaks/overlap_peaks.py
+++ b/call_peaks/overlap_peaks.py
@@ -8,8 +8,7 @@ import logging
 import shutil
 import pandas as pd
 import sys
-sys.path.append(os.path.abspath('../python_utils'))
-import utils
+from python_utils import utils
 
 EPILOG = '''
 For more details:
diff --git a/call_peaks/pool_and_psuedoreplicate.py b/call_peaks/pool_and_psuedoreplicate.py
index 6c2d0cc35acb60ea8630b953a8f50d42906ff9f0..f5078e71660f7e9243059736e77421a3cb6f5e1c 100644
--- a/call_peaks/pool_and_psuedoreplicate.py
+++ b/call_peaks/pool_and_psuedoreplicate.py
@@ -8,8 +8,7 @@ import pandas as pd
 import numpy as np
 import os
 import sys
-sys.path.append(os.path.abspath('../python_utils'))
-import utils
+from python_utils import utils
 
 EPILOG = '''
 For more details:
diff --git a/quality_metrics/xcor.py b/quality_metrics/xcor.py
index 672fdbb4f14bc8edc64c018e6991a8c7b0d47be2..50474692cea0682b26357674baeb7e7c96c89682 100644
--- a/quality_metrics/xcor.py
+++ b/quality_metrics/xcor.py
@@ -7,9 +7,7 @@ import argparse
 import shutil
 import logging
 from multiprocessing import cpu_count
-import sys
-sys.path.append(os.path.abspath('../python_utils'))
-import utils
+from python_utils import utils
 
 EPILOG = '''
 For more details:
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..d1887250818971491f316df33c66f147128e8ed8
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,7 @@
+from distutils.core import setup
+from setuptools import find_packages
+
+setup(
+    name = 'ProcessScripts',
+    packages = find_packages('.'),
+)