diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3e32624726c632c88d0bafc47a6e4fc7db183833..f5439dcc59ba27de4b86e8642414be90e9fa3bc3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,8 +18,8 @@ python-2:
   stage: test
   image: bilbydev/test-suite-py2
   before_script:
-    - pip install -r requirements.txt
-    - pip install -r optional_requirements.txt
+    # Install the dependencies specified in the Pipfile
+    - pipenv install --two --python=/opt/conda/bin/python2 --system --deploy
   script:
     - python setup.py install
     # Run tests without finding coverage
@@ -30,8 +30,8 @@ python-3:
   stage: test
   image: bilbydev/test-suite-py3
   before_script:
-    - pip install -r requirements.txt
-    - pip install -r optional_requirements.txt
+    # Install the dependencies specified in the Pipfile
+    - pipenv install --three --python=/opt/conda/bin/python --system --deploy
   script:
     - python setup.py install
 
@@ -44,7 +44,6 @@ python-3:
     - coverage-badge -o coverage_badge.svg -f
 
     # Make the documentation
-    - pip install -r docs/requirements.txt
     - cd docs
     - conda install -y make
     - make clean
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 28a02b7d6997be81a6e09b3506493e6e5b14846f..b941c69f52bb0f2908a8310f21083015163a4a0e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -18,6 +18,7 @@ Changes currently on master, but not under a tag.
 - Adds custom titles to corner plots
 - Adds plotting of the prior on 1D marginal distributions of corner plots
 - Adds a method to plot time-domain GW data
+- Added pipenv as a dependency manager
 - Hyperparameter estimation now enables the user to provide the single event evidences
 - Add nested samples to nestle output
 - Prior and child classes now implement the \_\_eq\_\_ magic method for comparisons
@@ -25,6 +26,7 @@ Changes currently on master, but not under a tag.
 - Added NestedSampler and MCSampler helper classes
 - Added sampler_requirements.txt file
 - Add AlignedSpin gw prior
+- Add units to know prior files
 
 ### Changes
 - Fix construct_cbc_derived_parameters
@@ -43,6 +45,7 @@ re-instantiate the Prior in most cases
 - Users can now choose to overwrite existing result files, rather than creating
   a .old file.
 - Make likelihood values stored in the posterior correct for dynesty and nestle
+- pymultinest output now stored in {outdir}/pm_{label}/
 
 ### Removed
 - Removes the "--detectors" command line argument (not a general CLI requirement)
diff --git a/Pipfile b/Pipfile
new file mode 100644
index 0000000000000000000000000000000000000000..258de82a4c2b72f9f7ae4017c89054e6d8dd8db6
--- /dev/null
+++ b/Pipfile
@@ -0,0 +1,33 @@
+[[source]]
+url = "https://pypi.org/simple"
+verify_ssl = true
+name = "pypi"
+
+[packages]
+future = "*"
+corner = "*"
+numpy = ">=1.9"
+matplotlib = "<3"
+scipy = ">=0.16"
+pandas = "*"
+deepdish = "*"
+mock = "*"
+astropy = "<3"
+gwpy = "*"
+theano = "*"
+lalsuite = "*"
+
+# cpnest = "*"
+dynesty = "*"
+emcee = "*"
+nestle = "*"
+ptemcee = "*"
+pymc3 = "*"
+pymultinest = "*"
+
+[requires]
+
+[dev-packages]
+
+[pipenv]
+allow_prereleases = false
diff --git a/Pipfile.lock b/Pipfile.lock
new file mode 100644
index 0000000000000000000000000000000000000000..7300f095ed679ab40898a18ef20603994527611d
--- /dev/null
+++ b/Pipfile.lock
@@ -0,0 +1,621 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "dec6b7c15df6450bdbd7946533a3cf8c8d554a48e7ca711787eaf5bfcba6c492"
+        },
+        "pipfile-spec": 6,
+        "requires": {},
+        "sources": [
+            {
+                "name": "pypi",
+                "url": "https://pypi.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "asn1crypto": {
+            "hashes": [
+                "sha256:2f1adbb7546ed199e3c90ef23ec95c5cf3585bac7d11fb7eb562a3fe89c64e87",
+                "sha256:9d5c20441baf0cb60a4ac34cc447c6c189024b6b4c6cd7877034f4965c464e49"
+            ],
+            "version": "==0.24.0"
+        },
+        "astropy": {
+            "hashes": [
+                "sha256:13cdf1ba17d2ecbafc9fcb20d82d2aa53f0fc116a815d17357f86c0180215ffc",
+                "sha256:22051a03bb268a0426a0170366e4680553028c5f9282f335c575a850e7eb85ef",
+                "sha256:32fbaf565bebbbc91b64271e1f08870cf23c63a7f852e848df932324dedc8a07",
+                "sha256:53979303beb386038ac6dd69c1d08b148d518a915c8c1f9c45179b5f752739fc",
+                "sha256:9f354bdde7fd1261b14379553dc3500956ddba56afc80c021f8592138d827a51",
+                "sha256:a8015f84c42051342a2a8ee710868e682b9775a3b7948fdc1e87124bcd6e69dc",
+                "sha256:b284f9452dc8330a0bec13713a739d5714f01de5c473a31df80f1719fe56956c",
+                "sha256:d46f4e578c2e0b69b0ae4958c426ca12cbf7849c5cadba9200aa8866ae107dfe",
+                "sha256:d918ce1da85ee8c90f3e1f40be6a6743d33bcd992fe813bfc193dac8fd7a544a"
+            ],
+            "index": "pypi",
+            "version": "==2.0.8"
+        },
+        "atomicwrites": {
+            "hashes": [
+                "sha256:0312ad34fcad8fac3704d441f7b317e50af620823353ec657a53e981f92920c0",
+                "sha256:ec9ae8adaae229e4f8446952d204a3e4b5fdd2d099f9be3aaf556120135fb3ee"
+            ],
+            "markers": "python_version != '3.1.*' and python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.0.*'",
+            "version": "==1.2.1"
+        },
+        "attrs": {
+            "hashes": [
+                "sha256:10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69",
+                "sha256:ca4be454458f9dec299268d472aaa5a11f67a4ff70093396e1ceae9c76cf4bbb"
+            ],
+            "version": "==18.2.0"
+        },
+        "cffi": {
+            "hashes": [
+                "sha256:151b7eefd035c56b2b2e1eb9963c90c6302dc15fbd8c1c0a83a163ff2c7d7743",
+                "sha256:1553d1e99f035ace1c0544050622b7bc963374a00c467edafac50ad7bd276aef",
+                "sha256:1b0493c091a1898f1136e3f4f991a784437fac3673780ff9de3bcf46c80b6b50",
+                "sha256:2ba8a45822b7aee805ab49abfe7eec16b90587f7f26df20c71dd89e45a97076f",
+                "sha256:3bb6bd7266598f318063e584378b8e27c67de998a43362e8fce664c54ee52d30",
+                "sha256:3c85641778460581c42924384f5e68076d724ceac0f267d66c757f7535069c93",
+                "sha256:3eb6434197633b7748cea30bf0ba9f66727cdce45117a712b29a443943733257",
+                "sha256:495c5c2d43bf6cebe0178eb3e88f9c4aa48d8934aa6e3cddb865c058da76756b",
+                "sha256:4c91af6e967c2015729d3e69c2e51d92f9898c330d6a851bf8f121236f3defd3",
+                "sha256:57b2533356cb2d8fac1555815929f7f5f14d68ac77b085d2326b571310f34f6e",
+                "sha256:770f3782b31f50b68627e22f91cb182c48c47c02eb405fd689472aa7b7aa16dc",
+                "sha256:79f9b6f7c46ae1f8ded75f68cf8ad50e5729ed4d590c74840471fc2823457d04",
+                "sha256:7a33145e04d44ce95bcd71e522b478d282ad0eafaf34fe1ec5bbd73e662f22b6",
+                "sha256:857959354ae3a6fa3da6651b966d13b0a8bed6bbc87a0de7b38a549db1d2a359",
+                "sha256:87f37fe5130574ff76c17cab61e7d2538a16f843bb7bca8ebbc4b12de3078596",
+                "sha256:95d5251e4b5ca00061f9d9f3d6fe537247e145a8524ae9fd30a2f8fbce993b5b",
+                "sha256:9d1d3e63a4afdc29bd76ce6aa9d58c771cd1599fbba8cf5057e7860b203710dd",
+                "sha256:a36c5c154f9d42ec176e6e620cb0dd275744aa1d804786a71ac37dc3661a5e95",
+                "sha256:a6a5cb8809091ec9ac03edde9304b3ad82ad4466333432b16d78ef40e0cce0d5",
+                "sha256:ae5e35a2c189d397b91034642cb0eab0e346f776ec2eb44a49a459e6615d6e2e",
+                "sha256:b0f7d4a3df8f06cf49f9f121bead236e328074de6449866515cea4907bbc63d6",
+                "sha256:b75110fb114fa366b29a027d0c9be3709579602ae111ff61674d28c93606acca",
+                "sha256:ba5e697569f84b13640c9e193170e89c13c6244c24400fc57e88724ef610cd31",
+                "sha256:be2a9b390f77fd7676d80bc3cdc4f8edb940d8c198ed2d8c0be1319018c778e1",
+                "sha256:ca1bd81f40adc59011f58159e4aa6445fc585a32bb8ac9badf7a2c1aa23822f2",
+                "sha256:d5d8555d9bfc3f02385c1c37e9f998e2011f0db4f90e250e5bc0c0a85a813085",
+                "sha256:e55e22ac0a30023426564b1059b035973ec82186ddddbac867078435801c7801",
+                "sha256:e90f17980e6ab0f3c2f3730e56d1fe9bcba1891eeea58966e89d352492cc74f4",
+                "sha256:ecbb7b01409e9b782df5ded849c178a0aa7c906cf8c5a67368047daab282b184",
+                "sha256:ed01918d545a38998bfa5902c7c00e0fee90e957ce036a4000a88e3fe2264917",
+                "sha256:edabd457cd23a02965166026fd9bfd196f4324fe6032e866d0f3bd0301cd486f",
+                "sha256:fdf1c1dc5bafc32bc5d08b054f94d659422b05aba244d6be4ddc1c72d9aa70fb"
+            ],
+            "version": "==1.11.5"
+        },
+        "corner": {
+            "hashes": [
+                "sha256:102e22797ee75d1432b6dc66aa2850f61388996ece66fd6600508742d2a7b88f"
+            ],
+            "index": "pypi",
+            "version": "==2.0.1"
+        },
+        "cryptography": {
+            "hashes": [
+                "sha256:02602e1672b62e803e08617ec286041cc453e8d43f093a5f4162095506bc0beb",
+                "sha256:10b48e848e1edb93c1d3b797c83c72b4c387ab0eb4330aaa26da8049a6cbede0",
+                "sha256:17db09db9d7c5de130023657be42689d1a5f60502a14f6f745f6f65a6b8195c0",
+                "sha256:227da3a896df1106b1a69b1e319dce218fa04395e8cc78be7e31ca94c21254bc",
+                "sha256:2cbaa03ac677db6c821dac3f4cdfd1461a32d0615847eedbb0df54bb7802e1f7",
+                "sha256:31db8febfc768e4b4bd826750a70c79c99ea423f4697d1dab764eb9f9f849519",
+                "sha256:4a510d268e55e2e067715d728e4ca6cd26a8e9f1f3d174faf88e6f2cb6b6c395",
+                "sha256:6a88d9004310a198c474d8a822ee96a6dd6c01efe66facdf17cb692512ae5bc0",
+                "sha256:76936ec70a9b72eb8c58314c38c55a0336a2b36de0c7ee8fb874a4547cadbd39",
+                "sha256:7e3b4aecc4040928efa8a7cdaf074e868af32c58ffc9bb77e7bf2c1a16783286",
+                "sha256:8168bcb08403ef144ff1fb880d416f49e2728101d02aaadfe9645883222c0aa5",
+                "sha256:8229ceb79a1792823d87779959184a1bf95768e9248c93ae9f97c7a2f60376a1",
+                "sha256:8a19e9f2fe69f6a44a5c156968d9fc8df56d09798d0c6a34ccc373bb186cee86",
+                "sha256:8d10113ca826a4c29d5b85b2c4e045ffa8bad74fb525ee0eceb1d38d4c70dfd6",
+                "sha256:be495b8ec5a939a7605274b6e59fbc35e76f5ad814ae010eb679529671c9e119",
+                "sha256:dc2d3f3b1548f4d11786616cf0f4415e25b0fbecb8a1d2cd8c07568f13fdde38",
+                "sha256:e4aecdd9d5a3d06c337894c9a6e2961898d3f64fe54ca920a72234a3de0f9cb3",
+                "sha256:e79ab4485b99eacb2166f3212218dd858258f374855e1568f728462b0e6ee0d9",
+                "sha256:f995d3667301e1754c57b04e0bae6f0fa9d710697a9f8d6712e8cca02550910f"
+            ],
+            "version": "==2.3.1"
+        },
+        "cycler": {
+            "hashes": [
+                "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d",
+                "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"
+            ],
+            "version": "==0.10.0"
+        },
+        "deepdish": {
+            "hashes": [
+                "sha256:2b1d3d2a32356909f2618c382a1829347990ad81b63aaecc87b35a046cd3034c",
+                "sha256:7858b674ef15ee79828de4892dadd2f58773ead527f3a62aaf1e8ce5a595a074"
+            ],
+            "index": "pypi",
+            "version": "==0.3.6"
+        },
+        "dynesty": {
+            "hashes": [
+                "sha256:82f9343a8d10de5754d16169da02721b42edb1ddca622ccfba6168746c4c838e"
+            ],
+            "index": "pypi",
+            "version": "==0.9.2"
+        },
+        "emcee": {
+            "hashes": [
+                "sha256:b83551e342b37311897906b3b8acf32979f4c5542e0a25786ada862d26241172"
+            ],
+            "index": "pypi",
+            "version": "==2.2.1"
+        },
+        "future": {
+            "hashes": [
+                "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
+            ],
+            "index": "pypi",
+            "version": "==0.16.0"
+        },
+        "gwpy": {
+            "hashes": [
+                "sha256:3b6d2ba9a8844f6321c62ff3b9439f119e6447194b3d234944b5120a0856b5cc",
+                "sha256:74c5066e19e2b10dd0571ac0f0bd588b302d1f6de639a994021a580bb90d93f4"
+            ],
+            "index": "pypi",
+            "version": "==0.12.2"
+        },
+        "h5py": {
+            "hashes": [
+                "sha256:0f8cd2acbacf3177b4427ed42639c911667b1f24d923388ab1f8ad466a12be5e",
+                "sha256:11277e3879098f921ee9e29105b20591e1dfdd44963357399f2abaa1a280c560",
+                "sha256:1241dec0c94ac32f3285cac1d6f44beabf80423e422ab03bd2686d731a8a9294",
+                "sha256:17b8187de0b3a945d8e8d031e7eb6ece2fce90791f9c5fde36f4396bf38fdde1",
+                "sha256:2f30007d0796788a454c1293262f19f25e6428317d3d386f78138fba2a44e37d",
+                "sha256:308e0758587ee16d4e73e7f2f8aae8351091e343bf0a43d2f697f9535465c816",
+                "sha256:37cacddf0e8209905f52537a8cf71da0dd9a4de62bd79247274c97b24a408997",
+                "sha256:38a23bb599748adf23d77f74885c0de6f4a7d9baa42f74e476bbf90fba2b47dd",
+                "sha256:47ab18b7b7bbc36fd2b606289b703b6f0ee915b923d6ad94dd17ac80ebffc280",
+                "sha256:486c78330af0bf33f5077b51d1888c0739c3cd1a03d5aade0d48572b3b5690ca",
+                "sha256:4e2183458d6ef1ae87dfb5d6acd0786359336cd9ac0ece6396c09b59fdaa3bd6",
+                "sha256:51d0595c3e58814c831f6cd2b664a5bf9590e26262c1d541b380d041e4fcb3c0",
+                "sha256:56d259d56822b70881760b243957f04a0cf133f0ec65eae6a33f562826aee899",
+                "sha256:5e6e777653169a3cc24ea56bb3d8c845ea391f8914c35bb6f350b0753a52891c",
+                "sha256:62bfb0ebb0f59e5dccc0b0dbbc0fc40dd1d1e09d04c0dc71f89790231531d4a2",
+                "sha256:67d89b64debfa021b54aa6f24bbf008403bd144748a0148596b518bce80d2fc4",
+                "sha256:6bf38571f555fa214493ec6349d29024cc5f313bf1715b09f236c553fd22ae4d",
+                "sha256:9214ca445c18a37bfe9c165982c0e317e2f21f035c8d635d1c6d9fcbaf35b7a8",
+                "sha256:ab0c52850428d2e86029935389379c2c97f752e76b616da851deec8a4484f8ec",
+                "sha256:b2eff336697d8dfd712c5d93fef9f4e4d3e97d9d8c258801836b8664a239e07a",
+                "sha256:bb33fabc0b8f3fe3bb0f8d6821b2fad5b2a64c27a0808e8d1c5c1e3362062064",
+                "sha256:bd5353ab342bae1262b04745934cc1565df4cbc8d6a979a0c98f42209bd5c265",
+                "sha256:bd73444efd1ac06dac27b8405bbe8791a02fd1bc8a2fa0e575257f90b7b57467",
+                "sha256:bd932236a2ef91a75fee5d7f4ace80ab494c5a59cd092a67c9785ddb7fdc218c",
+                "sha256:c45650de228ace7731e4280e14fb687f6d5c29cd666c5b22b42492b035e994d6",
+                "sha256:d5c0c01da45f901a3d429e7ef9e7e22baa869e1affb8715f1bf94e6a30020740",
+                "sha256:d75035db5bde802a29f4f29f18bb7548863d29ac90ccbf2c04c11799bbbba2c3",
+                "sha256:dda88206dc9464923f27f601000bc5b152ac0bd6d0122f098d4f239150a70076",
+                "sha256:e1c2ac5d0aa232c0f60fecc6bd1122346885086a176f939b91058c4c980cc226",
+                "sha256:e626c65a8587921ebc7fb8d31a49addfdd0b9a9aa96315ea484c09803337b955"
+            ],
+            "version": "==2.8.0"
+        },
+        "idna": {
+            "hashes": [
+                "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e",
+                "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16"
+            ],
+            "version": "==2.7"
+        },
+        "joblib": {
+            "hashes": [
+                "sha256:11cdfd38cdb71768149e1373f2509e9b4fc1ec6bc92f874cb515b25f2d69f8f4",
+                "sha256:142e74bee7b9dfad75c7dad24c4295b9084a6788116dd149e2fc7daf0db25675"
+            ],
+            "version": "==0.12.5"
+        },
+        "kiwisolver": {
+            "hashes": [
+                "sha256:0ee4ed8b3ae8f5f712b0aa9ebd2858b5b232f1b9a96b0943dceb34df2a223bc3",
+                "sha256:0f7f532f3c94e99545a29f4c3f05637f4d2713e7fd91b4dd8abfc18340b86cd5",
+                "sha256:1a078f5dd7e99317098f0e0d490257fd0349d79363e8c923d5bb76428f318421",
+                "sha256:1aa0b55a0eb1bd3fa82e704f44fb8f16e26702af1a073cc5030eea399e617b56",
+                "sha256:2874060b91e131ceeff00574b7c2140749c9355817a4ed498e82a4ffa308ecbc",
+                "sha256:379d97783ba8d2934d52221c833407f20ca287b36d949b4bba6c75274bcf6363",
+                "sha256:3b791ddf2aefc56382aadc26ea5b352e86a2921e4e85c31c1f770f527eb06ce4",
+                "sha256:4329008a167fac233e398e8a600d1b91539dc33c5a3eadee84c0d4b04d4494fa",
+                "sha256:45813e0873bbb679334a161b28cb9606d9665e70561fd6caa8863e279b5e464b",
+                "sha256:53a5b27e6b5717bdc0125338a822605084054c80f382051fb945d2c0e6899a20",
+                "sha256:574f24b9805cb1c72d02b9f7749aa0cc0b81aa82571be5201aa1453190390ae5",
+                "sha256:66f82819ff47fa67a11540da96966fb9245504b7f496034f534b81cacf333861",
+                "sha256:79e5fe3ccd5144ae80777e12973027bd2f4f5e3ae8eb286cabe787bed9780138",
+                "sha256:83410258eb886f3456714eea4d4304db3a1fc8624623fc3f38a487ab36c0f653",
+                "sha256:8b6a7b596ce1d2a6d93c3562f1178ebd3b7bb445b3b0dd33b09f9255e312a965",
+                "sha256:9576cb63897fbfa69df60f994082c3f4b8e6adb49cccb60efb2a80a208e6f996",
+                "sha256:95a25d9f3449046ecbe9065be8f8380c03c56081bc5d41fe0fb964aaa30b2195",
+                "sha256:a424f048bebc4476620e77f3e4d1f282920cef9bc376ba16d0b8fe97eec87cde",
+                "sha256:aaec1cfd94f4f3e9a25e144d5b0ed1eb8a9596ec36d7318a504d813412563a85",
+                "sha256:acb673eecbae089ea3be3dcf75bfe45fc8d4dcdc951e27d8691887963cf421c7",
+                "sha256:b15bc8d2c2848a4a7c04f76c9b3dc3561e95d4dabc6b4f24bfabe5fd81a0b14f",
+                "sha256:b1c240d565e977d80c0083404c01e4d59c5772c977fae2c483f100567f50847b",
+                "sha256:c595693de998461bcd49b8d20568c8870b3209b8ea323b2a7b0ea86d85864694",
+                "sha256:ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278",
+                "sha256:e0f910f84b35c36a3513b96d816e6442ae138862257ae18a0019d2fc67b041dc",
+                "sha256:ea36e19ac0a483eea239320aef0bd40702404ff8c7e42179a2d9d36c5afcb55c",
+                "sha256:efabbcd4f406b532206b8801058c8bab9e79645b9880329253ae3322b7b02cd5",
+                "sha256:f923406e6b32c86309261b8195e24e18b6a8801df0cfc7814ac44017bfcb3939"
+            ],
+            "markers": "python_version != '3.2.*' and python_version != '3.0.*' and python_version != '3.1.*' and python_version >= '2.7' and python_version != '3.3.*'",
+            "version": "==1.0.1"
+        },
+        "lalsuite": {
+            "hashes": [
+                "sha256:04851946d35129b4aaf8f70cdfeb8b907111cfa2910031b63c17f568e4309e13",
+                "sha256:288c623c855f9806bcaac27aa66ad684c60317b11df756dc6b5c321a769e177f",
+                "sha256:35450268f7e223ee9cf3246dfadfed80fd255d8312600329dc05d4bf582930bd",
+                "sha256:3e074fb2caf2189def95eaa89f85d6f497ee957476c18e8adb5be05aab501f0a",
+                "sha256:497f2ad84c5565e4e94e3696a5c4317ec4218b4070ee4a603c83e23147b81979",
+                "sha256:61952d7301c2c62aade8e1382964d67628eb721fb42191de1fc89fcd995e8553",
+                "sha256:a2d52070d946c76c1f5b3b4b37777136607b7285bf5aa485d978353666eaafdd",
+                "sha256:dd91c8445e94d92c4add4ccb2806c12a8fde9493ea29ac78063bba8863ea7801",
+                "sha256:df31cd918a20c82065f308184b39d9055f8271055d2da251c82aee85eceed244",
+                "sha256:e5da42137d118ac3fb368a4353dad40c5bbdf4f6a1c1918b811d103658cd862d"
+            ],
+            "index": "pypi",
+            "version": "==6.49"
+        },
+        "ligo-segments": {
+            "hashes": [
+                "sha256:373edab42206aff8b5f2ef4417a40a0b0150c53ba6613424ce0d996ca56e9d1f",
+                "sha256:6ac5bca4fe70325854f852ec2a6a30a36eddfa092fb370bd1865fee6ecc0d6e2",
+                "sha256:7694c568d31cb37223ccedab55e304adb2d34a6f3832ae18316e0d636d249335",
+                "sha256:871bca5de488f95b739837a8ebf84be91ba5116dfa20ce8f32e2f05b38b741d7",
+                "sha256:94159ab427422d4434dc9c07516a89fd7360ad27a64cb3d81b2015a27cd551ed",
+                "sha256:da4e2848b09046a1f81c03afd9c7293702c94a22b98d755e7d5806e65f206014"
+            ],
+            "version": "==1.0.1"
+        },
+        "ligotimegps": {
+            "hashes": [
+                "sha256:48a8bd249e1822ddb484e4e59477654c333d1fe7d6b0de37249b2dcae72c5c99",
+                "sha256:79ee18df7f6806d522f68d278b0ac426094626a479af58c178f32d2b319919ba"
+            ],
+            "version": "==1.2.3"
+        },
+        "lscsoft-glue": {
+            "hashes": [
+                "sha256:a0ddf26fbb45a19b046510e630b6d39a1798f4cd89ba883a38b4f2f491d39d2b"
+            ],
+            "version": "==1.59.3"
+        },
+        "matplotlib": {
+            "hashes": [
+                "sha256:0ba8e3ec1b0feddc6b068fe70dc38dcf2917e301ad8d2b3f848c14ad463a4157",
+                "sha256:10a48e33e64dbd95f0776ba162f379c5cc55301c2d155506e79ce0c26b52f2ce",
+                "sha256:1376535fe731adbba55ab9e48896de226b7e89dbb55390c5fbd8f7161b7ae3be",
+                "sha256:16f0f8ba22df1e2c9f06c87088de45742322fde282a93b5c744c0f969cf7932e",
+                "sha256:1c6c999f2212858021329537f8e0f98f3f29086ec3683511dd1ecec84409f51d",
+                "sha256:2316dc177fc7b3d8848b49365498de0c385b4c9bba511edddd24c34fbe3d37a4",
+                "sha256:3398bfb533482bf21974cecf28224dd23784ad4e4848be582903f7a2436ec12e",
+                "sha256:3477cb1e1061b34210acc43d20050be8444478ff50b8adfac5fe2b45fc97df01",
+                "sha256:3cc06333b8264428d02231804e2e726b902e9161dc16f573183dee6cb7ef621f",
+                "sha256:4259ea7cb2c238355ee13275eddd261d869cefbdeb18a65f35459589d6d17def",
+                "sha256:4addcf93234b6122f530f90f485fd3d00d158911fbc1ed24db3fa66cd49fe565",
+                "sha256:50c0e24bcbce9c54346f4a2f4e97b0ed111f0413ac3fe9954061ae1c8aa7021f",
+                "sha256:62ed7597d9e54db6e133420d779c642503c25eba390e1178d85dfb2ba0d05948",
+                "sha256:69f6d51e41a17f6a5f70c56bb10b8ded9f299609204495a7fa2782a3a755ffc5",
+                "sha256:6d232e49b74e3d2db22c63c25a9a0166d965e87e2b057f795487f1f244b61d9d",
+                "sha256:7355bf757ecacd5f0ac9dd9523c8e1a1103faadf8d33c22664178e17533f8ce5",
+                "sha256:886b1045c5105631f10c1cbc999f910e44d33af3e9c7efd68c2123efc06ab636",
+                "sha256:9e1f353edd7fc7e5e9101abd5bc0201946f77a1b59e0da49095086c03db856ed",
+                "sha256:b3a343dfcbe296dbe0f26c731beee72a792ff948407e6979524298ae7bc3234e",
+                "sha256:d93675af09ca497a25f4f8d62f3313cf0f21e45427a87487049fe84898b99909",
+                "sha256:e2409ef9d37804dfb566f39c962e6ed70f281ff516b8131b3e6b4e6442711ff1",
+                "sha256:f8b653b0f89938ba72e92ab080c2f3aa24c1b72e2f61add22880cd1b9a6e3cdd"
+            ],
+            "index": "pypi",
+            "version": "==2.2.3"
+        },
+        "mock": {
+            "hashes": [
+                "sha256:5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1",
+                "sha256:b158b6df76edd239b8208d481dc46b6afd45a846b7812ff0ce58971cf5bc8bba"
+            ],
+            "index": "pypi",
+            "version": "==2.0.0"
+        },
+        "more-itertools": {
+            "hashes": [
+                "sha256:c187a73da93e7a8acc0001572aebc7e3c69daf7bf6881a2cea10650bd4420092",
+                "sha256:c476b5d3a34e12d40130bc2f935028b5f636df8f372dc2c1c01dc19681b2039e",
+                "sha256:fcbfeaea0be121980e15bc97b3817b5202ca73d0eae185b4550cbfce2a3ebb3d"
+            ],
+            "version": "==4.3.0"
+        },
+        "nestle": {
+            "hashes": [
+                "sha256:5de798feebbc122b3680e2a1c916ec09934e3afc6171d220de2914ca31c3246d"
+            ],
+            "index": "pypi",
+            "version": "==0.2.0"
+        },
+        "numexpr": {
+            "hashes": [
+                "sha256:0a14dff7e893dd21f299993a6107437c2c7dd37a8aeb51933a8c0ff33ed1e036",
+                "sha256:11f215d739495f3c88c9cdd84f0b7ee27b5c1d4348df9b16854933d8165a1f7b",
+                "sha256:1374c5a996d1e48c64b26fad48fe2540c41f10436fbbe35cca61f35c57bcaeab",
+                "sha256:21a9ea646a76b8fe98ac1e1fcd914c03addd3e4aa7feb040bc462b274a47b2cf",
+                "sha256:21c05fb3ee1be0ff3be0d6ef572bf0e5dad27bf5d90c067e1580127340e36e2d",
+                "sha256:2a05c3c6342b0c1416cb3e8eecaee5ce9387917781afc1a5d5c5f93f546b3735",
+                "sha256:34e4381246893ac27c21c39356ef27ab7176d326f5a86b05486718f1f505f794",
+                "sha256:3d1f2123d385e3790fc9f650950a79aaaa9ac62f8455bd9451263d29f37924f2",
+                "sha256:4ddec358f5082ea941bb316a6aa1fec068dea6f7ed1f60a1089b03340c1f58af",
+                "sha256:53f50dbbd1d41c7ae33bf6811f0a4a6a333ae592baf218e257c9e32190235cba",
+                "sha256:58349f46670aa4d1cef14f9c794dda307bf8578d383c7e602fe36de112f6afa0",
+                "sha256:5fc41e3652c7154ee5767a99b3fd72d81c3b01df364c42ccd2e89926c8fbbda5",
+                "sha256:618e4058e6a707007aebbf74c37d8156ac0c26870dd6b8495678ba3fd9aaef79",
+                "sha256:7419c43f1b22d3cd282480d753242588b2a0f449c6429f0999a2eebe0e5d7426",
+                "sha256:7bde656a67ce5368cf1d748c569d0132baf9813c45860b872f3a35294067c1e4",
+                "sha256:90cc7b1e051a57386d9b3125506a1a2f320964e017a9a5ce78a055b99e826ceb",
+                "sha256:9415b24d6f79528ef85be3afe7871e0f49ae2bbe28cc9cb0272db4edd136e443",
+                "sha256:9e292c060172f415888fb36f50fd2d4688797f66ec11eb9fbc33666cacbd5f68",
+                "sha256:ae5dae4d34fc57c47167a7c79603f9592da504fc077833afc259451bc29cec4c",
+                "sha256:bf62d6fa0453cec848c91179857a46e84f0812881d9bdfa29cda0672e599c9a5",
+                "sha256:d304f4bfe69ca3e81a992a90c2a0e53c7fbc82769eedff32db8204496e223bbc",
+                "sha256:e5456df5fabcd02f08aa06f0f61eee682649bd5e033ac7319f91a9f9c1d4d1c3",
+                "sha256:e83bd5e6e424cf0a6e7d9de97d4ecd2d978eed478104f4c65496b8ea7d148268",
+                "sha256:ed2c841e3ced875c34abc89987f5203fce53e563341e4f4b2ac615b419412f37",
+                "sha256:edc4af30bbe504946d036ad9f2c849ff2c8a837d8df2c7f9f0b7d8497e982743",
+                "sha256:ee8bc7201aa2f1962c67d27c326a11eef9df887d7b87b1278a1d4e722bf44375"
+            ],
+            "markers": "python_version != '3.2.*' and python_version != '3.0.*' and python_version != '3.1.*' and python_version >= '2.7' and python_version != '3.3.*'",
+            "version": "==2.6.8"
+        },
+        "numpy": {
+            "hashes": [
+                "sha256:1b1cf8f7300cf7b11ddb4250b3898c711a6187df05341b5b7153db23ffe5d498",
+                "sha256:27a0d018f608a3fe34ac5e2b876f4c23c47e38295c47dd0775cc294cd2614bc1",
+                "sha256:3fde172e28c899580d32dc21cb6d4a1225d62362f61050b654545c662eac215a",
+                "sha256:497d7c86df4f85eb03b7f58a7dd0f8b948b1f582e77629341f624ba301b4d204",
+                "sha256:4e28e66cf80c09a628ae680efeb0aa9a066eb4bb7db2a5669024c5b034891576",
+                "sha256:58be95faf0ca2d886b5b337e7cba2923e3ad1224b806a91223ea39f1e0c77d03",
+                "sha256:5b4dfb6551eaeaf532054e2c6ef4b19c449c2e3a709ebdde6392acb1372ecabc",
+                "sha256:63f833a7c622e9082df3cbaf03b4fd92d7e0c11e2f9d87cb57dbf0e84441964b",
+                "sha256:71bf3b7ca15b1967bba3a1ef6a8e87286382a8b5e46ac76b42a02fe787c5237d",
+                "sha256:733dc5d47e71236263837825b69c975bc08728ae638452b34aeb1d6fa347b780",
+                "sha256:82f00a1e2695a0e5b89879aa25ea614530b8ebdca6d49d4834843d498e8a5e92",
+                "sha256:866bf72b9c3bfabe4476d866c70ee1714ad3e2f7b7048bb934892335e7b6b1f7",
+                "sha256:8aeac8b08f4b8c52129518efcd93706bb6d506ccd17830b67d18d0227cf32d9e",
+                "sha256:8d2cfb0aef7ec8759736cce26946efa084cdf49797712333539ef7d135e0295e",
+                "sha256:981224224bbf44d95278eb37996162e8beb6f144d2719b144e86dfe2fce6c510",
+                "sha256:981daff58fa3985a26daa4faa2b726c4e7a1d45178100125c0e1fdaf2ac64978",
+                "sha256:9ad36dbfdbb0cba90a08e7343fadf86f43cf6d87450e8d2b5d71d7c7202907e4",
+                "sha256:a251570bb3cb04f1627f23c234ad09af0e54fc8194e026cf46178f2e5748d647",
+                "sha256:b5ff7dae352fd9e1edddad1348698e9fea14064460a7e39121ef9526745802e6",
+                "sha256:c898f9cca806102fcacb6309899743aa39efb2ad2a302f4c319f54db9f05cd84",
+                "sha256:cf4b970042ce148ad8dce4369c02a4078b382dadf20067ce2629c239d76460d1",
+                "sha256:d1569013e8cc8f37e9769d19effdd85e404c976cd0ca28a94e3ddc026c216ae8",
+                "sha256:dca261e85fe0d34b2c242ecb31c9ab693509af2cf955d9caf01ee3ef3669abd0",
+                "sha256:ec8bf53ef7c92c99340972519adbe122e82c81d5b87cbd955c74ba8a8cd2a4ad",
+                "sha256:f2e55726a9ee2e8129d6ce6abb466304868051bcc7a09d652b3b07cd86e801a2",
+                "sha256:f4dee74f2626c783a3804df9191e9008946a104d5a284e52427a53ff576423cb",
+                "sha256:f592fd7fe1f20b5041928cce1330937eca62f9058cb41e69c2c2d83cffc0d1e3",
+                "sha256:ffab5b80bba8c86251291b8ce2e6c99a61446459d4c6637f5d5cc8c9ce37c972"
+            ],
+            "index": "pypi",
+            "version": "==1.15.2"
+        },
+        "pandas": {
+            "hashes": [
+                "sha256:11975fad9edbdb55f1a560d96f91830e83e29bed6ad5ebf506abda09818eaf60",
+                "sha256:12e13d127ca1b585dd6f6840d3fe3fa6e46c36a6afe2dbc5cb0b57032c902e31",
+                "sha256:1c87fcb201e1e06f66e23a61a5fea9eeebfe7204a66d99df24600e3f05168051",
+                "sha256:242e9900de758e137304ad4b5663c2eff0d798c2c3b891250bd0bd97144579da",
+                "sha256:26c903d0ae1542890cb9abadb4adcb18f356b14c2df46e4ff657ae640e3ac9e7",
+                "sha256:2e1e88f9d3e5f107b65b59cd29f141995597b035d17cc5537e58142038942e1a",
+                "sha256:31b7a48b344c14691a8e92765d4023f88902ba3e96e2e4d0364d3453cdfd50db",
+                "sha256:4fd07a932b4352f8a8973761ab4e84f965bf81cc750fb38e04f01088ab901cb8",
+                "sha256:5b24ca47acf69222e82530e89111dd9d14f9b970ab2cd3a1c2c78f0c4fbba4f4",
+                "sha256:647b3b916cc8f6aeba240c8171be3ab799c3c1b2ea179a3be0bd2712c4237553",
+                "sha256:66b060946046ca27c0e03e9bec9bba3e0b918bafff84c425ca2cc2e157ce121e",
+                "sha256:6efa9fa6e1434141df8872d0fa4226fc301b17aacf37429193f9d70b426ea28f",
+                "sha256:be4715c9d8367e51dbe6bc6d05e205b1ae234f0dc5465931014aa1c4af44c1ba",
+                "sha256:bea90da782d8e945fccfc958585210d23de374fa9294a9481ed2abcef637ebfc",
+                "sha256:d318d77ab96f66a59e792a481e2701fba879e1a453aefeebdb17444fe204d1ed",
+                "sha256:d785fc08d6f4207437e900ffead930a61e634c5e4f980ba6d3dc03c9581748c7",
+                "sha256:de9559287c4fe8da56e8c3878d2374abc19d1ba2b807bfa7553e912a8e5ba87c",
+                "sha256:f4f98b190bb918ac0bc0e3dd2ab74ff3573da9f43106f6dba6385406912ec00f",
+                "sha256:f71f1a7e2d03758f6e957896ed696254e2bc83110ddbc6942018f1a232dd9dad",
+                "sha256:fb944c8f0b0ab5c1f7846c686bc4cdf8cde7224655c12edcd59d5212cd57bec0"
+            ],
+            "index": "pypi",
+            "version": "==0.23.4"
+        },
+        "pathlib2": {
+            "hashes": [
+                "sha256:8eb170f8d0d61825e09a95b38be068299ddeda82f35e96c3301a8a5e7604cb83",
+                "sha256:d1aa2a11ba7b8f7b21ab852b1fb5afb277e1bb99d5dfc663380b5015c0d80c5a"
+            ],
+            "markers": "python_version < '3.6'",
+            "version": "==2.3.2"
+        },
+        "patsy": {
+            "hashes": [
+                "sha256:14269536ecedaae0a5a2f300faac7d0afa1cc47aa98c561f54ba7300d0ec4011",
+                "sha256:e05f38d5c38c8d216f0cc2b765b1069b433c92d628b954fb2fee68d13e42883b"
+            ],
+            "markers": "python_version != '3.1.*' and python_version != '3.3.*' and python_version >= '2.7' and python_version != '3.2.*' and python_version != '3.0.*'",
+            "version": "==0.5.0"
+        },
+        "pbr": {
+            "hashes": [
+                "sha256:1b8be50d938c9bb75d0eaf7eda111eec1bf6dc88a62a6412e33bf077457e0f45",
+                "sha256:b486975c0cafb6beeb50ca0e17ba047647f229087bd74e37f4a7e2cac17d2caa"
+            ],
+            "version": "==4.2.0"
+        },
+        "pluggy": {
+            "hashes": [
+                "sha256:6e3836e39f4d36ae72840833db137f7b7d35105079aee6ec4a62d9f80d594dd1",
+                "sha256:95eb8364a4708392bae89035f45341871286a333f749c3141c20573d2b3876e1"
+            ],
+            "markers": "python_version != '3.1.*' and python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.0.*'",
+            "version": "==0.7.1"
+        },
+        "ptemcee": {
+            "hashes": [
+                "sha256:58e7c1d9a477acd808668b5caa5cb4d61fc5f6cd1df02a391d0d04cd14453739"
+            ],
+            "index": "pypi",
+            "version": "==1.0.0"
+        },
+        "py": {
+            "hashes": [
+                "sha256:06a30435d058473046be836d3fc4f27167fd84c45b99704f2fb5509ef61f9af1",
+                "sha256:50402e9d1c9005d759426988a492e0edaadb7f4e68bcddfea586bc7432d009c6"
+            ],
+            "markers": "python_version != '3.1.*' and python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.0.*'",
+            "version": "==1.6.0"
+        },
+        "pycparser": {
+            "hashes": [
+                "sha256:a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"
+            ],
+            "markers": "python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.1.*' and python_version != '3.0.*'",
+            "version": "==2.19"
+        },
+        "pymc3": {
+            "hashes": [
+                "sha256:49639eb62e14f7735ecbb03fa79f1c5f59f2e971c8ce0168b86ed1929e2c14ee",
+                "sha256:6088e683c6d730bb21350a0f54ee083fa5a28e4d5ef52d57878141c9c20f21ee"
+            ],
+            "index": "pypi",
+            "version": "==3.5"
+        },
+        "pymultinest": {
+            "hashes": [
+                "sha256:42f1f5efa13c99b9faebd205151ac6136adfb86bb428a714deb3f489daa58f06",
+                "sha256:e5e76de90d226150659bc817e4a207556060bd91db1471e731d7734a7aa1826e"
+            ],
+            "index": "pypi",
+            "version": "==2.6"
+        },
+        "pyopenssl": {
+            "hashes": [
+                "sha256:26ff56a6b5ecaf3a2a59f132681e2a80afcc76b4f902f612f518f92c2a1bf854",
+                "sha256:6488f1423b00f73b7ad5167885312bb0ce410d3312eb212393795b53c8caa580"
+            ],
+            "version": "==18.0.0"
+        },
+        "pyparsing": {
+            "hashes": [
+                "sha256:bc6c7146b91af3f567cf6daeaec360bc07d45ffec4cf5353f4d7a208ce7ca30a",
+                "sha256:d29593d8ebe7b57d6967b62494f8c72b03ac0262b1eed63826c6f788b3606401"
+            ],
+            "markers": "python_version != '3.2.*' and python_version >= '2.6' and python_version != '3.1.*' and python_version != '3.0.*'",
+            "version": "==2.2.2"
+        },
+        "pytest": {
+            "hashes": [
+                "sha256:0a72d8a9f559c006ba153e0c9b4838efd7b656cf1f993747ba7128770d6eb12c",
+                "sha256:95529588ff4e85114a0b0ad8e9cf0131ca47d46b28230e25366c5aba66b1d854"
+            ],
+            "markers": "python_version != '3.2.*' and python_version >= '2.7' and python_version != '3.3.*' and python_version != '3.1.*' and python_version != '3.0.*'",
+            "version": "==3.8.1"
+        },
+        "python-dateutil": {
+            "hashes": [
+                "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0",
+                "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8"
+            ],
+            "version": "==2.7.3"
+        },
+        "pytz": {
+            "hashes": [
+                "sha256:a061aa0a9e06881eb8b3b2b43f05b9439d6583c206d0a6c340ff72a7b6669053",
+                "sha256:ffb9ef1de172603304d9d2819af6f5ece76f2e85ec10692a524dd876e72bf277"
+            ],
+            "version": "==2018.5"
+        },
+        "scipy": {
+            "hashes": [
+                "sha256:0611ee97296265af4a21164a5323f8c1b4e8e15c582d3dfa7610825900136bb7",
+                "sha256:08237eda23fd8e4e54838258b124f1cd141379a5f281b0a234ca99b38918c07a",
+                "sha256:0e645dbfc03f279e1946cf07c9c754c2a1859cb4a41c5f70b25f6b3a586b6dbd",
+                "sha256:0e9bb7efe5f051ea7212555b290e784b82f21ffd0f655405ac4f87e288b730b3",
+                "sha256:108c16640849e5827e7d51023efb3bd79244098c3f21e4897a1007720cb7ce37",
+                "sha256:340ef70f5b0f4e2b4b43c8c8061165911bc6b2ad16f8de85d9774545e2c47463",
+                "sha256:3ad73dfc6f82e494195144bd3a129c7241e761179b7cb5c07b9a0ede99c686f3",
+                "sha256:3b243c77a822cd034dad53058d7c2abf80062aa6f4a32e9799c95d6391558631",
+                "sha256:404a00314e85eca9d46b80929571b938e97a143b4f2ddc2b2b3c91a4c4ead9c5",
+                "sha256:423b3ff76957d29d1cce1bc0d62ebaf9a3fdfaf62344e3fdec14619bb7b5ad3a",
+                "sha256:42d9149a2fff7affdd352d157fa5717033767857c11bd55aa4a519a44343dfef",
+                "sha256:625f25a6b7d795e8830cb70439453c9f163e6870e710ec99eba5722775b318f3",
+                "sha256:698c6409da58686f2df3d6f815491fd5b4c2de6817a45379517c92366eea208f",
+                "sha256:729f8f8363d32cebcb946de278324ab43d28096f36593be6281ca1ee86ce6559",
+                "sha256:8190770146a4c8ed5d330d5b5ad1c76251c63349d25c96b3094875b930c44692",
+                "sha256:878352408424dffaa695ffedf2f9f92844e116686923ed9aa8626fc30d32cfd1",
+                "sha256:8b984f0821577d889f3c7ca8445564175fb4ac7c7f9659b7c60bef95b2b70e76",
+                "sha256:8f841bbc21d3dad2111a94c490fb0a591b8612ffea86b8e5571746ae76a3deac",
+                "sha256:c22b27371b3866c92796e5d7907e914f0e58a36d3222c5d436ddd3f0e354227a",
+                "sha256:d0cdd5658b49a722783b8b4f61a6f1f9c75042d0e29a30ccb6cacc9b25f6d9e2",
+                "sha256:d40dc7f494b06dcee0d303e51a00451b2da6119acbeaccf8369f2d29e28917ac",
+                "sha256:d8491d4784aceb1f100ddb8e31239c54e4afab8d607928a9f7ef2469ec35ae01",
+                "sha256:dfc5080c38dde3f43d8fbb9c0539a7839683475226cf83e4b24363b227dfe552",
+                "sha256:e24e22c8d98d3c704bb3410bce9b69e122a8de487ad3dbfe9985d154e5c03a40",
+                "sha256:e7a01e53163818d56eabddcafdc2090e9daba178aad05516b20c6591c4811020",
+                "sha256:ee677635393414930541a096fc8e61634304bb0153e4e02b75685b11eba14cae",
+                "sha256:f0521af1b722265d824d6ad055acfe9bd3341765735c44b5a4d0069e189a0f40",
+                "sha256:f25c281f12c0da726c6ed00535ca5d1622ec755c30a3f8eafef26cf43fede694"
+            ],
+            "index": "pypi",
+            "version": "==1.1.0"
+        },
+        "six": {
+            "hashes": [
+                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
+                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
+            ],
+            "version": "==1.11.0"
+        },
+        "tables": {
+            "hashes": [
+                "sha256:07bb9e96b762874e239ad8cec2cab2c4129abf576fffcdd4e961482dc7d5a0a6",
+                "sha256:09eed21e12a1286ac2e8c5e67a75d9c7a7f262883535a31ac0b985540135d8d6",
+                "sha256:0bd7e5d7ff90df3751bfb2494d41858b96118965edd8cc03758bbc638e2e2f2c",
+                "sha256:2379bc98dd8caa6f5824daae4b3b1e53008af32c7b684c67deaeebc1a89a929e",
+                "sha256:2cd49a98e750fe78b7a2b8e0efd69be608c8358f664f3705c98cc6f04da18a53",
+                "sha256:415731ae46dfdef7fbe305399a700a54b06a82c4331ba20cc64004fb40e79069",
+                "sha256:44289caf89efac435f49fa4bd298eb48969c026dec25d3a76e7955f1281d1bdf",
+                "sha256:714f7162ffa4d470da8c9a067935520e5925384445bdb23989351b48d236345c",
+                "sha256:82d98123cf67c012d6c7cb69c6733b51eb10d17fc40547bbb71ffedae8da4f90",
+                "sha256:b625fc71f082011806a60d3b7370f75e34b141dab549ed65957aed54d1f12f63",
+                "sha256:bc1621bd84769ff3f84cfd1481f93ed0c537db4b3355576270bdbb79bb390b1f",
+                "sha256:bdc5c073712af2a43babd139c4855fc99496bb2c3f3f5d1b4770a985e6f9ce29",
+                "sha256:bed4f423dd33600907f1c3b88f994920f2b879b12bf83d4372f861ef4085e085",
+                "sha256:c3ac22e3391f67a381d9a3018fd7e0a1ccfcc88b5f61b0d051fe5eba8196388f",
+                "sha256:da98c8abfeefefad40110b994d5d06ac28d89b00d085530d377376b201566ebf",
+                "sha256:e2e4e40d010a6aa0464e5e281d4aa15f64acd99fd881c0e1e4c1c567b7167dba",
+                "sha256:e3bd7084dbf80ef347ad5d33645584e0fe7f8353cf2c33d8922a4c00034fa015",
+                "sha256:e8f9b20b9623c900e7007b89a9d3e315280b666ac70b38b0c191345f7d4d8585",
+                "sha256:f786d310cf954eaf52340680dfbc5c1190afc276093f5c454fab605a11488306",
+                "sha256:f97c8b5ebec23894fc56af25c6e73bc86b463cbccb1f9b9887def24cd7811e2c"
+            ],
+            "version": "==3.4.4"
+        },
+        "theano": {
+            "hashes": [
+                "sha256:637f3b34d40ef5e0d54dd4c40618475aaa085c26d2491e925c98e2ad4bc2115a"
+            ],
+            "index": "pypi",
+            "version": "==1.0.3"
+        },
+        "tqdm": {
+            "hashes": [
+                "sha256:18f1818ce951aeb9ea162ae1098b43f583f7d057b34d706f66939353d1208889",
+                "sha256:df02c0650160986bac0218bb07952245fc6960d23654648b5d5526ad5a4128c9"
+            ],
+            "markers": "python_version != '3.1.*' and python_version >= '2.6' and python_version != '3.0.*'",
+            "version": "==4.26.0"
+        }
+    },
+    "develop": {}
+}
diff --git a/examples/injection_examples/basic_tutorial.py b/examples/injection_examples/basic_tutorial.py
index 2c18ef1c33fba11302dd09a6a892196a2e8861dd..b86058a3a64b223c6bf1f7acae187803b5b703b3 100644
--- a/examples/injection_examples/basic_tutorial.py
+++ b/examples/injection_examples/basic_tutorial.py
@@ -60,8 +60,9 @@ ifos.inject_signal(waveform_generator=waveform_generator,
 # that will be included in the sampler.  If we do nothing, then the default priors get used.
 priors = tupak.gw.prior.BBHPriorSet()
 priors['geocent_time'] = tupak.core.prior.Uniform(
-    minimum=injection_parameters['geocent_time'] - 1, maximum=injection_parameters['geocent_time'] + 1,
-    name='geocent_time', latex_label='$t_c$')
+    minimum=injection_parameters['geocent_time'] - 1,
+    maximum=injection_parameters['geocent_time'] + 1,
+    name='geocent_time', latex_label='$t_c$', unit='$s$')
 for key in ['a_1', 'a_2', 'tilt_1', 'tilt_2', 'phi_12', 'phi_jl', 'psi', 'ra', 'dec', 'geocent_time', 'phase']:
     priors[key] = injection_parameters[key]
 
diff --git a/examples/injection_examples/change_sampled_parameters.py b/examples/injection_examples/change_sampled_parameters.py
index 106ace05c782ec8dc485e46c288527722e8731f8..a25bd15381f9241522b7ecadea03e266a2c0ec23 100644
--- a/examples/injection_examples/change_sampled_parameters.py
+++ b/examples/injection_examples/change_sampled_parameters.py
@@ -50,7 +50,8 @@ priors.pop('mass_1')
 priors.pop('mass_2')
 priors.pop('luminosity_distance')
 priors['chirp_mass'] = tupak.prior.Uniform(
-    name='chirp_mass', latex_label='$m_c$', minimum=13, maximum=45)
+    name='chirp_mass', latex_label='$m_c$', minimum=13, maximum=45,
+    unit='$M_{\\odot}$')
 priors['symmetric_mass_ratio'] = tupak.prior.Uniform(
     name='symmetric_mass_ratio', latex_label='q', minimum=0.1, maximum=0.25)
 priors['redshift'] = tupak.prior.Uniform(
diff --git a/examples/injection_examples/create_your_own_time_domain_source_model.py b/examples/injection_examples/create_your_own_time_domain_source_model.py
index b1f814c6e9cf3bc7fe6f2c5146cdf2f10fed49d8..7fdbaa06fa88fbb7c7ed3f1afbf8ba315ea6fa83 100644
--- a/examples/injection_examples/create_your_own_time_domain_source_model.py
+++ b/examples/injection_examples/create_your_own_time_domain_source_model.py
@@ -47,8 +47,9 @@ ifos.inject_signal(waveform_generator=waveform,
 #  create the priors
 prior = injection_parameters.copy()
 prior['amplitude'] = tupak.core.prior.Uniform(1e-23, 1e-21, r'$h_0$')
-prior['damping_time'] = tupak.core.prior.Uniform(0, 1, r'damping time')
-prior['frequency'] = tupak.core.prior.Uniform(0, 200, r'frequency')
+prior['damping_time'] = tupak.core.prior.Uniform(
+    0, 1, r'damping time', unit='$s$')
+prior['frequency'] = tupak.core.prior.Uniform(0, 200, r'frequency', unit='Hz')
 prior['phase'] = tupak.core.prior.Uniform(-np.pi / 2, np.pi / 2, r'$\phi$')
 
 # define likelihood
diff --git a/examples/injection_examples/eccentric_inspiral.py b/examples/injection_examples/eccentric_inspiral.py
index f4077b640c2d3446f7c32699e58e4bdfda3f3215..fc8500e5d36b5218a6cf6f800bc8af2e4da43fb5 100644
--- a/examples/injection_examples/eccentric_inspiral.py
+++ b/examples/injection_examples/eccentric_inspiral.py
@@ -60,16 +60,23 @@ ifos.inject_signal(waveform_generator=waveform_generator,
 
 # Now we set up the priors on each of the binary parameters.
 priors = dict()
-priors["mass_1"] = tupak.core.prior.Uniform(name='mass_1', minimum=5, maximum=60)
-priors["mass_2"] = tupak.core.prior.Uniform(name='mass_2', minimum=5, maximum=60)
-priors["eccentricity"] = tupak.core.prior.PowerLaw(name='eccentricity', latex_label='$e$', alpha=-1, minimum=1e-4, maximum=0.4)
-priors["luminosity_distance"] =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1e2, maximum=2e3)
-priors["dec"] =  tupak.core.prior.Cosine(name='dec')
-priors["ra"] =  tupak.core.prior.Uniform(name='ra', minimum=0, maximum=2 * np.pi)
-priors["iota"] =  tupak.core.prior.Sine(name='iota')
-priors["psi"] =  tupak.core.prior.Uniform(name='psi', minimum=0, maximum=np.pi)
-priors["phase"] =  tupak.core.prior.Uniform(name='phase', minimum=0, maximum=2 * np.pi)
-priors["geocent_time"] = tupak.core.prior.Uniform(1180002600.9, 1180002601.1, name='geocent_time')
+priors["mass_1"] = tupak.core.prior.Uniform(
+    name='mass_1', minimum=5, maximum=60, unit='$M_{\\odot}$')
+priors["mass_2"] = tupak.core.prior.Uniform(
+    name='mass_2', minimum=5, maximum=60, unit='$M_{\\odot}$')
+priors["eccentricity"] = tupak.core.prior.PowerLaw(
+    name='eccentricity', latex_label='$e$', alpha=-1, minimum=1e-4, maximum=0.4)
+priors["luminosity_distance"] = tupak.gw.prior.UniformComovingVolume(
+    name='luminosity_distance', minimum=1e2, maximum=2e3)
+priors["dec"] = tupak.core.prior.Cosine(name='dec')
+priors["ra"] = tupak.core.prior.Uniform(
+    name='ra', minimum=0, maximum=2 * np.pi)
+priors["iota"] = tupak.core.prior.Sine(name='iota')
+priors["psi"] = tupak.core.prior.Uniform(name='psi', minimum=0, maximum=np.pi)
+priors["phase"] = tupak.core.prior.Uniform(
+    name='phase', minimum=0, maximum=2 * np.pi)
+priors["geocent_time"] = tupak.core.prior.Uniform(
+    1180002600.9, 1180002601.1, name='geocent_time', unit='s')
 
 # Initialising the likelihood function.
 likelihood = tupak.gw.likelihood.GravitationalWaveTransient(interferometers=ifos,
diff --git a/examples/injection_examples/how_to_specify_the_prior.py b/examples/injection_examples/how_to_specify_the_prior.py
index 51b7877dde665ece58094500d25e9504e81c94d7..3489d4aa3c3e4233c4d2c13759106c1a01eead1d 100644
--- a/examples/injection_examples/how_to_specify_the_prior.py
+++ b/examples/injection_examples/how_to_specify_the_prior.py
@@ -40,25 +40,29 @@ ifos.inject_signal(waveform_generator=waveform_generator,
 # This loads in a predefined set of priors for BBHs.
 priors = tupak.gw.prior.BBHPriorSet()
 # These parameters will not be sampled
-for key in ['tilt_1', 'tilt_2', 'phi_12', 'phi_jl', 'phase', 'iota', 'ra', 'dec', 'geocent_time', 'psi']:
+for key in ['tilt_1', 'tilt_2', 'phi_12', 'phi_jl', 'phase', 'iota', 'ra',
+            'dec', 'geocent_time', 'psi']:
     priors[key] = injection_parameters[key]
 # We can make uniform distributions.
-priors['mass_2'] = tupak.core.prior.Uniform(name='mass_2', minimum=20, maximum=40)
+priors['mass_2'] = tupak.core.prior.Uniform(
+    name='mass_2', minimum=20, maximum=40, unit='$M_{\\odot}$')
 # We can make a power-law distribution, p(x) ~ x^{alpha}
 # Note: alpha=0 is a uniform distribution, alpha=-1 is uniform-in-log
-priors['a_1'] = tupak.core.prior.PowerLaw(name='a_1', alpha=-1, minimum=1e-2, maximum=1)
+priors['a_1'] = tupak.core.prior.PowerLaw(
+    name='a_1', alpha=-1, minimum=1e-2, maximum=1)
 # We can define a prior from an array as follows.
 # Note: this doesn't have to be properly normalised.
 a_2 = np.linspace(0, 1, 1001)
 p_a_2 = a_2 ** 4
-priors['a_2'] = tupak.core.prior.Interped(name='a_2', xx=a_2, yy=p_a_2, minimum=0, maximum=0.5)
+priors['a_2'] = tupak.core.prior.Interped(
+    name='a_2', xx=a_2, yy=p_a_2, minimum=0, maximum=0.5)
 # Additionally, we have Gaussian, TruncatedGaussian, Sine and Cosine.
 # It's also possible to load an interpolate a prior from a file.
 # Finally, if you don't specify any necessary parameters it will be filled in from the default when the sampler starts.
 # Enjoy.
 
 # Initialise GravitationalWaveTransient
-likelihood = tupak.GravitationalWaveTransient(interferometers=ifos, waveform_generator=waveform_generator)
+likelihood = tupak.gw.GravitationalWaveTransient(interferometers=ifos, waveform_generator=waveform_generator)
 
 # Run sampler
 result = tupak.run_sampler(likelihood=likelihood, priors=priors, sampler='dynesty',
diff --git a/examples/injection_examples/sine_gaussian_example.py b/examples/injection_examples/sine_gaussian_example.py
index aba4081847b49c4f7388df6ccf348c4558c8c5d7..7974332df265f62b3e10c37c1dba7a2176f19a10 100644
--- a/examples/injection_examples/sine_gaussian_example.py
+++ b/examples/injection_examples/sine_gaussian_example.py
@@ -53,7 +53,7 @@ for key in ['psi', 'ra', 'dec', 'geocent_time']:
 #priors['Q'] = tupak.prior.create_default_prior(name='Q')
 #priors['frequency'] = tupak.prior.create_default_prior(name='frequency')
 priors['Q'] = tupak.core.prior.Uniform(2, 50, 'Q')
-priors['frequency'] = tupak.core.prior.Uniform(30, 1000, 'frequency')
+priors['frequency'] = tupak.core.prior.Uniform(30, 1000, 'frequency', unit='Hz')
 priors['hrss'] = tupak.core.prior.Uniform(1e-23, 1e-21, 'hrss')
 
 # Initialise the likelihood by passing in the interferometer data (IFOs) and the waveoform generator
diff --git a/examples/supernova_example/supernova_example.py b/examples/supernova_example/supernova_example.py
index 2365bd55ef652f47819214acf7635615e5ab82b2..18cfd389cff034ebff31cba9e14bc3de0c11793e 100644
--- a/examples/supernova_example/supernova_example.py
+++ b/examples/supernova_example/supernova_example.py
@@ -68,7 +68,7 @@ priors = dict()
 for key in ['psi', 'geocent_time']:
     priors[key] = injection_parameters[key]
 priors['luminosity_distance'] = tupak.core.prior.Uniform(
-    2, 20, 'luminosity_distance')
+    2, 20, 'luminosity_distance', unit='$kpc$')
 priors['pc_coeff1'] = tupak.core.prior.Uniform(-1, 1, 'pc_coeff1')
 priors['pc_coeff2'] = tupak.core.prior.Uniform(-1, 1, 'pc_coeff2')
 priors['pc_coeff3'] = tupak.core.prior.Uniform(-1, 1, 'pc_coeff3')
@@ -80,7 +80,7 @@ priors['dec'] = tupak.core.prior.Sine(name='dec')
 priors['geocent_time'] = tupak.core.prior.Uniform(
     injection_parameters['geocent_time'] - 1,
     injection_parameters['geocent_time'] + 1,
-    'geocent_time')
+    'geocent_time', unit='$s$')
 
 # Initialise the likelihood by passing in the interferometer data (IFOs) and
 # the waveoform generator
diff --git a/test/prior_files/binary_black_holes.prior b/test/prior_files/binary_black_holes.prior
index 7dfc784a2107c1b0eb5a837743a054fef3fc7c37..eb47cdaf08f722c97c9552a8fe4b880f26b71a00 100644
--- a/test/prior_files/binary_black_holes.prior
+++ b/test/prior_files/binary_black_holes.prior
@@ -2,10 +2,10 @@
 # Note that you may wish to use more specific mass and distance parameters.
 # These commands are all known to tupak.gw.prior.
 # Lines beginning "#" are ignored.
-mass_1 = Uniform(name='mass_1', minimum=5, maximum=100)
-mass_2 = Uniform(name='mass_2', minimum=5, maximum=100)
-# chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100)
-# total_mass =  Uniform(name='total_mass', minimum=10, maximum=200)
+mass_1 = Uniform(name='mass_1', minimum=5, maximum=100, unit='$M_{\\odot}$')
+mass_2 = Uniform(name='mass_2', minimum=5, maximum=100, unit='$M_{\\odot}$')
+# chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100, unit='$M_{\\odot}$')
+# total_mass =  Uniform(name='total_mass', minimum=10, maximum=200, unit='$M_{\\odot}$')
 # mass_ratio =  Uniform(name='mass_ratio', minimum=0.125, maximum=1)
 # symmetric_mass_ratio =  Uniform(name='symmetric_mass_ratio', minimum=8 / 81, maximum=0.25)
 a_1 =  Uniform(name='a_1', minimum=0, maximum=0.8)
@@ -16,7 +16,7 @@ tilt_2 =  Sine(name='tilt_2')
 # cos_tilt_2 =  Uniform(name='cos_tilt_2', minimum=-1, maximum=1)
 phi_12 =  Uniform(name='phi_12', minimum=0, maximum=2 * np.pi)
 phi_jl =  Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi)
-luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1e2, maximum=5e3)
+luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1e2, maximum=5e3, unit='Mpc')
 dec =  Cosine(name='dec')
 ra =  Uniform(name='ra', minimum=0, maximum=2 * np.pi)
 iota =  Sine(name='iota')
diff --git a/test/prior_test.py b/test/prior_test.py
index 89047308738512b59799c994f90fb48ea3137309..c147d723efb477b5064378b960cfeacfdf3c8032 100644
--- a/test/prior_test.py
+++ b/test/prior_test.py
@@ -347,22 +347,30 @@ class TestPriorSet(unittest.TestCase):
     #     shutil.rmtree(outdir_path)
 
     def test_read_from_file(self):
-        expected = dict(mass_1=tupak.core.prior.Uniform(name='mass_1', minimum=5, maximum=100),
-                        mass_2=tupak.core.prior.Uniform(name='mass_2', minimum=5, maximum=100),
-                        a_1=tupak.core.prior.Uniform(name='a_1', minimum=0, maximum=0.8),
-                        a_2=tupak.core.prior.Uniform(name='a_2', minimum=0, maximum=0.8),
-                        tilt_1=tupak.core.prior.Sine(name='tilt_1'),
-                        tilt_2=tupak.core.prior.Sine(name='tilt_2'),
-                        phi_12=tupak.core.prior.Uniform(name='phi_12', minimum=0, maximum=2 * np.pi),
-                        phi_jl=tupak.core.prior.Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi),
-                        luminosity_distance=tupak.gw.prior.UniformComovingVolume(name='luminosity_distance',
-                                                                                 minimum=1e2, maximum=5e3),
-                        dec=tupak.core.prior.Cosine(name='dec'),
-                        ra=tupak.core.prior.Uniform(name='ra', minimum=0, maximum=2 * np.pi),
-                        iota=tupak.core.prior.Sine(name='iota'),
-                        psi=tupak.core.prior.Uniform(name='psi', minimum=0, maximum=np.pi),
-                        phase=tupak.core.prior.Uniform(name='phase', minimum=0, maximum=2 * np.pi)
-                        )
+        expected = dict(
+            mass_1=tupak.core.prior.Uniform(
+                name='mass_1', minimum=5, maximum=100, unit='$M_{\\odot}$'),
+            mass_2=tupak.core.prior.Uniform(
+                name='mass_2', minimum=5, maximum=100, unit='$M_{\\odot}$'),
+            a_1=tupak.core.prior.Uniform(name='a_1', minimum=0, maximum=0.8),
+            a_2=tupak.core.prior.Uniform(name='a_2', minimum=0, maximum=0.8),
+            tilt_1=tupak.core.prior.Sine(name='tilt_1'),
+            tilt_2=tupak.core.prior.Sine(name='tilt_2'),
+            phi_12=tupak.core.prior.Uniform(
+                name='phi_12', minimum=0, maximum=2 * np.pi),
+            phi_jl=tupak.core.prior.Uniform(
+                name='phi_jl', minimum=0, maximum=2 * np.pi),
+            luminosity_distance=tupak.gw.prior.UniformComovingVolume(
+                name='luminosity_distance', minimum=1e2,
+                maximum=5e3, unit='Mpc'),
+            dec=tupak.core.prior.Cosine(name='dec'),
+            ra=tupak.core.prior.Uniform(
+                name='ra', minimum=0, maximum=2 * np.pi),
+            iota=tupak.core.prior.Sine(name='iota'),
+            psi=tupak.core.prior.Uniform(name='psi', minimum=0, maximum=np.pi),
+            phase=tupak.core.prior.Uniform(
+                name='phase', minimum=0, maximum=2 * np.pi)
+            )
         self.assertDictEqual(expected, self.prior_set_from_file)
 
     def test_convert_floats_to_delta_functions(self):
@@ -380,22 +388,30 @@ class TestPriorSet(unittest.TestCase):
 
     def test_prior_set_from_dict_but_using_a_string(self):
         prior_set = tupak.core.prior.PriorSet(dictionary=self.default_prior_file)
-        expected = dict(mass_1=tupak.core.prior.Uniform(name='mass_1', minimum=5, maximum=100),
-                        mass_2=tupak.core.prior.Uniform(name='mass_2', minimum=5, maximum=100),
-                        a_1=tupak.core.prior.Uniform(name='a_1', minimum=0, maximum=0.8),
-                        a_2=tupak.core.prior.Uniform(name='a_2', minimum=0, maximum=0.8),
-                        tilt_1=tupak.core.prior.Sine(name='tilt_1'),
-                        tilt_2=tupak.core.prior.Sine(name='tilt_2'),
-                        phi_12=tupak.core.prior.Uniform(name='phi_12', minimum=0, maximum=2 * np.pi),
-                        phi_jl=tupak.core.prior.Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi),
-                        luminosity_distance=tupak.gw.prior.UniformComovingVolume(name='luminosity_distance',
-                                                                                 minimum=1e2, maximum=5e3),
-                        dec=tupak.core.prior.Cosine(name='dec'),
-                        ra=tupak.core.prior.Uniform(name='ra', minimum=0, maximum=2 * np.pi),
-                        iota=tupak.core.prior.Sine(name='iota'),
-                        psi=tupak.core.prior.Uniform(name='psi', minimum=0, maximum=np.pi),
-                        phase=tupak.core.prior.Uniform(name='phase', minimum=0, maximum=2 * np.pi)
-                        )
+        expected = dict(
+            mass_1=tupak.core.prior.Uniform(
+                name='mass_1', minimum=5, maximum=100, unit='$M_{\\odot}$'),
+            mass_2=tupak.core.prior.Uniform(
+                name='mass_2', minimum=5, maximum=100, unit='$M_{\\odot}$'),
+            a_1=tupak.core.prior.Uniform(name='a_1', minimum=0, maximum=0.8),
+            a_2=tupak.core.prior.Uniform(name='a_2', minimum=0, maximum=0.8),
+            tilt_1=tupak.core.prior.Sine(name='tilt_1'),
+            tilt_2=tupak.core.prior.Sine(name='tilt_2'),
+            phi_12=tupak.core.prior.Uniform(
+                name='phi_12', minimum=0, maximum=2 * np.pi),
+            phi_jl=tupak.core.prior.Uniform(
+                name='phi_jl', minimum=0, maximum=2 * np.pi),
+            luminosity_distance=tupak.gw.prior.UniformComovingVolume(
+                name='luminosity_distance', minimum=1e2,
+                maximum=5e3, unit='Mpc'),
+            dec=tupak.core.prior.Cosine(name='dec'),
+            ra=tupak.core.prior.Uniform(
+                name='ra', minimum=0, maximum=2 * np.pi),
+            iota=tupak.core.prior.Sine(name='iota'),
+            psi=tupak.core.prior.Uniform(name='psi', minimum=0, maximum=np.pi),
+            phase=tupak.core.prior.Uniform(
+                name='phase', minimum=0, maximum=2 * np.pi)
+        )
         self.assertDictEqual(expected, prior_set)
 
     def test_dict_argument_is_not_string_or_dict(self):
diff --git a/test/sampler_test.py b/test/sampler_test.py
index 53ec81b109cee30759484bc40624ffd635bab5d9..035d5324dabae6d2f457d4b8144c40409cab9763 100644
--- a/test/sampler_test.py
+++ b/test/sampler_test.py
@@ -360,7 +360,7 @@ class TestPymultinest(unittest.TestCase):
     def test_default_kwargs(self):
         expected = dict(importance_nested_sampling=False, resume=True,
                         verbose=True, sampling_efficiency='parameter',
-                        outputfiles_basename='outdir/pymultinest_label/',
+                        outputfiles_basename='outdir/pm_label/',
                         n_live_points=500, n_params=None,
                         n_clustering_params=None, wrapped_params=None,
                         multimodal=True, const_efficiency_mode=False,
@@ -374,7 +374,7 @@ class TestPymultinest(unittest.TestCase):
     def test_translate_kwargs(self):
         expected = dict(importance_nested_sampling=False, resume=True,
                         verbose=True, sampling_efficiency='parameter',
-                        outputfiles_basename='outdir/pymultinest_label/',
+                        outputfiles_basename='outdir/pm_label/',
                         n_live_points=123, n_params=None,
                         n_clustering_params=None, wrapped_params=None,
                         multimodal=True, const_efficiency_mode=False,
diff --git a/tupak/__init__.py b/tupak/__init__.py
index 8e0fd6a27cdee23f3676bd0da0930d5cd9f96d66..2dca9e6f1f44e7829c10c3e7842a622bb2d7e1d7 100644
--- a/tupak/__init__.py
+++ b/tupak/__init__.py
@@ -16,12 +16,10 @@ https://monash.docs.ligo.org/tupak/installation.html.
 """
 
 
-from __future__ import print_function, division, absolute_import
+from __future__ import absolute_import
 
-import tupak.core
-import tupak.gw
-import tupak.hyper
+from . import core, gw, hyper
 
-from tupak.core import utils, likelihood, prior, result, sampler
-from tupak.core.sampler import run_sampler
-from tupak.core.likelihood import Likelihood
+from .core import utils, likelihood, prior, result, sampler
+from .core.sampler import run_sampler
+from .core.likelihood import Likelihood
diff --git a/tupak/core/__init__.py b/tupak/core/__init__.py
index 94d3b3b2ffc7020e9f38eba6f7f4d031078bb56a..daa0c453de731ff0581c863b58b599d7b37e9d26 100644
--- a/tupak/core/__init__.py
+++ b/tupak/core/__init__.py
@@ -1,6 +1,2 @@
 from __future__ import absolute_import
-import tupak.core.likelihood
-import tupak.core.prior
-import tupak.core.result
-import tupak.core.sampler
-import tupak.core.utils
\ No newline at end of file
+from . import likelihood, prior, result, sampler, utils
diff --git a/tupak/core/likelihood.py b/tupak/core/likelihood.py
index f743ecb3262b9e0bcb8b155deea277dcb687f3f5..0b184cefa9c4c96cdd392ef16107fb5d0e5dce0f 100644
--- a/tupak/core/likelihood.py
+++ b/tupak/core/likelihood.py
@@ -1,9 +1,9 @@
 from __future__ import division, print_function
 
+import copy
 import numpy as np
 from scipy.special import gammaln
-from tupak.core.utils import infer_parameters_from_function
-import copy
+from .utils import infer_parameters_from_function
 
 
 class Likelihood(object):
diff --git a/tupak/core/prior.py b/tupak/core/prior.py
index 3cc6f12f6b85150e52a358444c91477893b25ca7..68fa8ba9102b8d7538c56487c57da63b65cf57a7 100644
--- a/tupak/core/prior.py
+++ b/tupak/core/prior.py
@@ -9,8 +9,8 @@ import os
 from collections import OrderedDict
 from future.utils import iteritems
 
-from tupak.core.utils import logger
-from tupak.core import utils
+from .utils import logger
+from . import utils
 import tupak  # noqa
 import inspect
 
diff --git a/tupak/core/result.py b/tupak/core/result.py
index 018c9a120299b3abd4c3af51bc1a7d34fa2bd77e..2617aff8a5121a3d87175c9eb74e8c66d5fe088e 100644
--- a/tupak/core/result.py
+++ b/tupak/core/result.py
@@ -8,9 +8,9 @@ import matplotlib
 import matplotlib.pyplot as plt
 from collections import OrderedDict
 
-from tupak.core import utils
-from tupak.core.utils import logger
-from tupak.core.prior import PriorSet, DeltaFunction
+from . import utils
+from .utils import logger
+from .prior import PriorSet, DeltaFunction
 
 
 def result_file_name(outdir, label):
diff --git a/tupak/core/sampler/pymultinest.py b/tupak/core/sampler/pymultinest.py
index 4ea5b0f2929e8868130e81f98e10746adc9d9d1d..025368318c4a78b316809b1d22c03348b876cb85 100644
--- a/tupak/core/sampler/pymultinest.py
+++ b/tupak/core/sampler/pymultinest.py
@@ -2,6 +2,7 @@ from __future__ import absolute_import
 
 from ..utils import check_directory_exists_and_if_not_mkdir
 from .base_sampler import NestedSampler
+from tupak.core.utils import logger
 
 
 class Pymultinest(NestedSampler):
@@ -48,12 +49,26 @@ class Pymultinest(NestedSampler):
                     kwargs['n_live_points'] = kwargs.pop(equiv)
 
     def _verify_kwargs_against_default_kwargs(self):
+        """
+        Test the length of the directory where multinest will write the output.
+
+        This is an issue with MultiNest that we can't solve here.
+        https://github.com/JohannesBuchner/PyMultiNest/issues/115
+        """
         if not self.kwargs['outputfiles_basename']:
-            self.kwargs['outputfiles_basename'] = self.outdir + '/pymultinest_{}/'.format(self.label)
+            self.kwargs['outputfiles_basename'] =\
+                '{}/pm_{}/'.format(self.outdir, self.label)
         if self.kwargs['outputfiles_basename'].endswith('/') is False:
             self.kwargs['outputfiles_basename'] = '{}/'.format(
                 self.kwargs['outputfiles_basename'])
-        check_directory_exists_and_if_not_mkdir(self.kwargs['outputfiles_basename'])
+        if len(self.kwargs['outputfiles_basename']) > (100 - 22):
+            logger.warning(
+                'The length of {} exceeds 78 characters. '
+                ' Post-processing will fail because the file names will be cut'
+                ' off. Please choose a shorter "outdir" or "label".'
+                .format(self.__kwargs['outputfiles_basename']))
+        check_directory_exists_and_if_not_mkdir(
+            self.kwargs['outputfiles_basename'])
         NestedSampler._verify_kwargs_against_default_kwargs(self)
 
     def run_sampler(self):
diff --git a/tupak/gw/__init__.py b/tupak/gw/__init__.py
index 47063bf1e2790e5ef41ad096f9723905994e9cd9..3273cbd3e8358d2d91a3a44249c6dac3d00db287 100644
--- a/tupak/gw/__init__.py
+++ b/tupak/gw/__init__.py
@@ -1,13 +1,5 @@
-from __future__ import absolute_import
-import tupak.gw.conversion
-import tupak.gw.detector
-import tupak.gw.likelihood
-import tupak.gw.prior
-import tupak.gw.source
-import tupak.gw.utils
-import tupak.gw.waveform_generator
-from . import calibration
+from . import (calibration, conversion, detector, likelihood, prior, source,
+               utils, waveform_generator)
 
-
-from tupak.gw.waveform_generator import WaveformGenerator
-from tupak.gw.likelihood import GravitationalWaveTransient
+from .waveform_generator import WaveformGenerator
+from .likelihood import GravitationalWaveTransient
diff --git a/tupak/gw/conversion.py b/tupak/gw/conversion.py
index 5f78db028e631ec5d6e0daf2ac8ffb221a48c9aa..8c24eb8f3bc4a9db0e21850c785c7e8fd2af0e12 100644
--- a/tupak/gw/conversion.py
+++ b/tupak/gw/conversion.py
@@ -1,9 +1,9 @@
 from __future__ import division
-import tupak
 import numpy as np
 import pandas as pd
 
-from tupak.core.utils import logger
+from ..core.utils import logger, solar_mass
+from ..core.prior import DeltaFunction
 
 try:
     from astropy.cosmology import z_at_value, Planck15
@@ -535,7 +535,7 @@ def fill_from_fixed_priors(sample, priors):
     output_sample = sample.copy()
     if priors is not None:
         for name in priors:
-            if isinstance(priors[name], tupak.core.prior.DeltaFunction):
+            if isinstance(priors[name], DeltaFunction):
                 output_sample[name] = priors[name].peak
     return output_sample
 
@@ -610,8 +610,8 @@ def generate_component_spins(sample):
                 output_sample['tilt_1'], output_sample['tilt_2'],
                 output_sample['phi_12'], output_sample['a_1'],
                 output_sample['a_2'],
-                output_sample['mass_1'] * tupak.core.utils.solar_mass,
-                output_sample['mass_2'] * tupak.core.utils.solar_mass,
+                output_sample['mass_1'] * solar_mass,
+                output_sample['mass_2'] * solar_mass,
                 output_sample['reference_frequency'], output_sample['phase'])
 
         output_sample['phi_1'] =\
@@ -637,8 +637,8 @@ def generate_component_spins(sample):
                     output_sample['tilt_1'][ii], output_sample['tilt_2'][ii],
                     output_sample['phi_12'][ii], output_sample['a_1'][ii],
                     output_sample['a_2'][ii],
-                    output_sample['mass_1'][ii] * tupak.core.utils.solar_mass,
-                    output_sample['mass_2'][ii] * tupak.core.utils.solar_mass,
+                    output_sample['mass_1'][ii] * solar_mass,
+                    output_sample['mass_2'][ii] * solar_mass,
                     output_sample['reference_frequency'][ii],
                     output_sample['phase'][ii])
 
diff --git a/tupak/gw/detector.py b/tupak/gw/detector.py
index 924e8a8782149439c956381d431edd0114ac80dd..1755ab484d4c1f17c5278f050dc471ca71650a68 100644
--- a/tupak/gw/detector.py
+++ b/tupak/gw/detector.py
@@ -7,9 +7,9 @@ import numpy as np
 from scipy.signal.windows import tukey
 from scipy.interpolate import interp1d
 
-from tupak.gw import utils as gwutils
-from tupak.core import utils
-from tupak.core.utils import logger
+from . import utils as gwutils
+from ..core import utils
+from ..core.utils import logger
 from .calibration import Recalibrate
 
 try:
diff --git a/tupak/gw/likelihood.py b/tupak/gw/likelihood.py
index 3d7a77197c89cde2caa64042dd663ab7567ddb1d..8965678ce40ace58af4c0722ae4c184fc6a04d29 100644
--- a/tupak/gw/likelihood.py
+++ b/tupak/gw/likelihood.py
@@ -8,11 +8,14 @@ except ImportError:
     from scipy.misc import logsumexp
 from scipy.special import i0e
 
-import tupak
-from tupak.core import likelihood as likelihood
-from tupak.core.utils import logger
-from tupak.gw.prior import BBHPriorSet
-from tupak.core.prior import Uniform
+from ..core import likelihood
+from ..core.utils import logger
+from ..core.prior import Prior, Uniform
+from .detector import InterferometerList
+from .prior import BBHPriorSet
+from .source import lal_binary_black_hole
+from .utils import noise_weighted_inner_product
+from .waveform_generator import WaveformGenerator
 
 
 class GravitationalWaveTransient(likelihood.Likelihood):
@@ -57,7 +60,7 @@ class GravitationalWaveTransient(likelihood.Likelihood):
 
         self.waveform_generator = waveform_generator
         likelihood.Likelihood.__init__(self, dict())
-        self.interferometers = tupak.gw.detector.InterferometerList(interferometers)
+        self.interferometers = InterferometerList(interferometers)
         self.time_marginalization = time_marginalization
         self.distance_marginalization = distance_marginalization
         self.phase_marginalization = phase_marginalization
@@ -111,7 +114,7 @@ class GravitationalWaveTransient(likelihood.Likelihood):
 
     def _check_prior_is_set(self, key):
         if key not in self.prior or not isinstance(
-                self.prior[key], tupak.core.prior.Prior):
+                self.prior[key], Prior):
             logger.warning(
                 'Prior not provided for {}, using the BBH default.'.format(key))
             if key == 'geocent_time':
@@ -138,7 +141,7 @@ class GravitationalWaveTransient(likelihood.Likelihood):
     def noise_log_likelihood(self):
         log_l = 0
         for interferometer in self.interferometers:
-            log_l -= tupak.gw.utils.noise_weighted_inner_product(
+            log_l -= noise_weighted_inner_product(
                 interferometer.frequency_domain_strain,
                 interferometer.frequency_domain_strain,
                 interferometer.power_spectral_density_array,
@@ -381,8 +384,10 @@ def get_binary_black_hole_likelihood(interferometers):
     tupak.GravitationalWaveTransient: The likelihood to pass to `run_sampler`
 
     """
-    waveform_generator = tupak.gw.waveform_generator.WaveformGenerator(
-        duration=interferometers.duration, sampling_frequency=interferometers.sampling_frequency,
-        frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole,
-        waveform_arguments={'waveform_approximant': 'IMRPhenomPv2', 'reference_frequency': 50})
-    return tupak.gw.likelihood.GravitationalWaveTransient(interferometers, waveform_generator)
+    waveform_generator = WaveformGenerator(
+        duration=interferometers.duration,
+        sampling_frequency=interferometers.sampling_frequency,
+        frequency_domain_source_model=lal_binary_black_hole,
+        waveform_arguments={'waveform_approximant': 'IMRPhenomPv2',
+                            'reference_frequency': 50})
+    return GravitationalWaveTransient(interferometers, waveform_generator)
diff --git a/tupak/gw/prior.py b/tupak/gw/prior.py
index d45f2a7eedc314242aa0618ecdabc60a416a0309..0907e49b6addf30dc77abb8008fa5f105a88bbad 100644
--- a/tupak/gw/prior.py
+++ b/tupak/gw/prior.py
@@ -1,14 +1,15 @@
 import os
+import numpy as np
+from scipy.interpolate import UnivariateSpline
 from ..core.prior import (PriorSet, Uniform, FromFile, Prior, DeltaFunction,
                           Gaussian, Interped)
 from ..core.utils import logger
-import numpy as np
-from scipy.interpolate import UnivariateSpline
 
 
 class UniformComovingVolume(FromFile):
 
-    def __init__(self, minimum=None, maximum=None, name='luminosity distance', latex_label='$d_L$'):
+    def __init__(self, minimum=None, maximum=None,
+                 name='luminosity distance', latex_label='$d_L$', unit='Mpc'):
         """
 
         Parameters
@@ -24,7 +25,7 @@ class UniformComovingVolume(FromFile):
         """
         file_name = os.path.join(os.path.dirname(__file__), 'prior_files', 'comoving.txt')
         FromFile.__init__(self, file_name=file_name, minimum=minimum, maximum=maximum, name=name,
-                          latex_label=latex_label, unit='Mpc')
+                          latex_label=latex_label, unit=unit)
 
 
 class AlignedSpin(Interped):
diff --git a/tupak/gw/prior_files/GW150914.prior b/tupak/gw/prior_files/GW150914.prior
index 8c372425f351e4df9012377101e9b41d8e1da85a..022d9c9ee1541e3fd9baec4b812c8d38f59a1d54 100644
--- a/tupak/gw/prior_files/GW150914.prior
+++ b/tupak/gw/prior_files/GW150914.prior
@@ -1,19 +1,19 @@
 # These are the default priors for analysing GW150914.
-mass_1 = Uniform(name='mass_1', minimum=30, maximum=50)
-mass_2 = Uniform(name='mass_2', minimum=20, maximum=40)
+mass_1 = Uniform(name='mass_1', minimum=30, maximum=50, unit='$M_{\\odot}$')
+mass_2 = Uniform(name='mass_2', minimum=20, maximum=40, unit='$M_{\\odot}$')
 a_1 =  Uniform(name='a_1', minimum=0, maximum=0.8)
 a_2 =  Uniform(name='a_2', minimum=0, maximum=0.8)
 tilt_1 =  Sine(name='tilt_1')
 tilt_2 =  Sine(name='tilt_2')
 phi_12 =  Uniform(name='phi_12', minimum=0, maximum=2 * np.pi)
 phi_jl =  Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi)
-luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1e2, maximum=1e3)
+luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1e2, maximum=1e3, unit='Mpc')
 dec =  Cosine(name='dec')
 ra =  Uniform(name='ra', minimum=0, maximum=2 * np.pi)
 iota =  Sine(name='iota')
 psi =  Uniform(name='psi', minimum=0, maximum=np.pi)
 phase =  Uniform(name='phase', minimum=0, maximum=2 * np.pi)
-geocent_time = Uniform(1126259462.322, 1126259462.522, name='geocent_time')
+geocent_time = Uniform(1126259462.322, 1126259462.522, name='geocent_time', unit='$s$')
 # These are the calibration parameters as described in
 # https://journals.aps.org/prx/abstract/10.1103/PhysRevX.6.041015
 # recalib_H1_frequency_0 = 20
diff --git a/tupak/gw/prior_files/binary_black_holes.prior b/tupak/gw/prior_files/binary_black_holes.prior
index 7dfc784a2107c1b0eb5a837743a054fef3fc7c37..eb47cdaf08f722c97c9552a8fe4b880f26b71a00 100644
--- a/tupak/gw/prior_files/binary_black_holes.prior
+++ b/tupak/gw/prior_files/binary_black_holes.prior
@@ -2,10 +2,10 @@
 # Note that you may wish to use more specific mass and distance parameters.
 # These commands are all known to tupak.gw.prior.
 # Lines beginning "#" are ignored.
-mass_1 = Uniform(name='mass_1', minimum=5, maximum=100)
-mass_2 = Uniform(name='mass_2', minimum=5, maximum=100)
-# chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100)
-# total_mass =  Uniform(name='total_mass', minimum=10, maximum=200)
+mass_1 = Uniform(name='mass_1', minimum=5, maximum=100, unit='$M_{\\odot}$')
+mass_2 = Uniform(name='mass_2', minimum=5, maximum=100, unit='$M_{\\odot}$')
+# chirp_mass = Uniform(name='chirp_mass', minimum=25, maximum=100, unit='$M_{\\odot}$')
+# total_mass =  Uniform(name='total_mass', minimum=10, maximum=200, unit='$M_{\\odot}$')
 # mass_ratio =  Uniform(name='mass_ratio', minimum=0.125, maximum=1)
 # symmetric_mass_ratio =  Uniform(name='symmetric_mass_ratio', minimum=8 / 81, maximum=0.25)
 a_1 =  Uniform(name='a_1', minimum=0, maximum=0.8)
@@ -16,7 +16,7 @@ tilt_2 =  Sine(name='tilt_2')
 # cos_tilt_2 =  Uniform(name='cos_tilt_2', minimum=-1, maximum=1)
 phi_12 =  Uniform(name='phi_12', minimum=0, maximum=2 * np.pi)
 phi_jl =  Uniform(name='phi_jl', minimum=0, maximum=2 * np.pi)
-luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1e2, maximum=5e3)
+luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=1e2, maximum=5e3, unit='Mpc')
 dec =  Cosine(name='dec')
 ra =  Uniform(name='ra', minimum=0, maximum=2 * np.pi)
 iota =  Sine(name='iota')
diff --git a/tupak/gw/prior_files/binary_neutron_stars.prior b/tupak/gw/prior_files/binary_neutron_stars.prior
index f7b427c3c324c00ea8246d5150e6df9362f709c9..605498a7a4eb3066d5716fb4aa3a38c6fe9afd6b 100644
--- a/tupak/gw/prior_files/binary_neutron_stars.prior
+++ b/tupak/gw/prior_files/binary_neutron_stars.prior
@@ -2,15 +2,15 @@
 # Note that you may wish to use more specific mass and distance parameters.
 # These commands are all known to tupak.gw.prior.
 # Lines beginning "#" are ignored.
-mass_1 = Uniform(name='mass_1', minimum=1, maximum=2)
-mass_2 = Uniform(name='mass_2', minimum=1, maximum=2)
-# chirp_mass = Uniform(name='chirp_mass', minimum=0.87, maximum=1.74)
-# total_mass =  Uniform(name='total_mass', minimum=2, maximum=4)
+mass_1 = Uniform(name='mass_1', minimum=1, maximum=2, unit='$M_{\\odot}$')
+mass_2 = Uniform(name='mass_2', minimum=1, maximum=2, unit='$M_{\\odot}$')
+# chirp_mass = Uniform(name='chirp_mass', minimum=0.87, maximum=1.74, unit='$M_{\\odot}$')
+# total_mass =  Uniform(name='total_mass', minimum=2, maximum=4, unit='$M_{\\odot}$')
 # mass_ratio =  Uniform(name='mass_ratio', minimum=0.5, maximum=1)
 # symmetric_mass_ratio =  Uniform(name='symmetric_mass_ratio', minimum=0.22, maximum=0.25)
 a_1 =  Uniform(name='a_1', minimum= -0.05, maximum= 0.05)
 a_2 =  Uniform(name='a_2', minimum= -0.05, maximum= 0.05)
-luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=10, maximum=500)
+luminosity_distance =  tupak.gw.prior.UniformComovingVolume(name='luminosity_distance', minimum=10, maximum=500, unit='Mpc')
 dec =  Cosine(name='dec')
 ra =  Uniform(name='ra', minimum=0, maximum=2 * np.pi)
 iota =  Sine(name='iota')
diff --git a/tupak/gw/source.py b/tupak/gw/source.py
index 85641ab26d61b7fc8963e5dda18c4045bc4279de..6ea32a002b47d9db62b0e1faf2ed77ca0af6662b 100644
--- a/tupak/gw/source.py
+++ b/tupak/gw/source.py
@@ -2,8 +2,8 @@ from __future__ import division, print_function
 
 import numpy as np
 
-from tupak.core.utils import logger
-from tupak.core import utils
+from ..core import utils
+from ..core.utils import logger
 
 try:
     import lalsimulation as lalsim
diff --git a/tupak/gw/utils.py b/tupak/gw/utils.py
index 60fb7d150270bb7130f6f93d8605e3d632aca32c..6bc9d061fcf6f03c5542bff3bca45e04fd8844a1 100644
--- a/tupak/gw/utils.py
+++ b/tupak/gw/utils.py
@@ -3,7 +3,8 @@ import os
 
 import numpy as np
 
-from ..core.utils import (gps_time_to_gmst, ra_dec_to_theta_phi, speed_of_light, logger)
+from ..core.utils import (gps_time_to_gmst, ra_dec_to_theta_phi,
+                          speed_of_light, logger)
 
 try:
     from gwpy.timeseries import TimeSeries
diff --git a/tupak/gw/waveform_generator.py b/tupak/gw/waveform_generator.py
index 0134ffbb5f0c7ae6caeffbb830a4308ff5086c50..b9f00c76aaa0ccdb12cc385f1f1be4a7192cb5b4 100644
--- a/tupak/gw/waveform_generator.py
+++ b/tupak/gw/waveform_generator.py
@@ -1,5 +1,5 @@
-from tupak.core import utils
 import numpy as np
+from ..core import utils
 
 
 class WaveformGenerator(object):
diff --git a/tupak/hyper/__init__.py b/tupak/hyper/__init__.py
index 45ec4869a0c81d87d975e9171cf5da6a52c08926..b25e08c4f8e1e6f317063eb26e5d3512011f6e65 100644
--- a/tupak/hyper/__init__.py
+++ b/tupak/hyper/__init__.py
@@ -1,3 +1 @@
-from __future__ import absolute_import
-import tupak.hyper.likelihood
-import tupak.hyper.model
+from . import likelihood, model