diff --git a/AUTHORS.rst b/AUTHORS.rst
new file mode 100644
index 0000000000000000000000000000000000000000..82f4d5a62da982f312dde06653391810508258b0
--- /dev/null
+++ b/AUTHORS.rst
@@ -0,0 +1,13 @@
+=======
+Credits
+=======
+
+Development Lead
+----------------
+
+* IRIS PASSCAL <software-support@passcal.nmt.edu>
+
+Contributors
+------------
+
+None yet. Why not be the first?
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
new file mode 100644
index 0000000000000000000000000000000000000000..58d9d3577ecfc9f89195afc173982c3b69b3f35e
--- /dev/null
+++ b/CONTRIBUTING.rst
@@ -0,0 +1,114 @@
+.. highlight:: shell
+
+============
+Contributing
+============
+
+Contributions are welcome, and they are greatly appreciated! Every little bit
+helps, and credit will always be given.
+
+You can contribute in many ways:
+
+Types of Contributions
+----------------------
+
+Report Bugs
+~~~~~~~~~~~
+
+Report bugs at https://git.passcal.nmt.edu/passoft/nexus/issues.
+
+If you are reporting a bug, please include:
+
+* Your operating system name and version.
+* Any details about your local setup that might be helpful in troubleshooting.
+* Detailed steps to reproduce the bug.
+
+Fix Bugs
+~~~~~~~~
+
+Look through the GitHub issues for bugs. Anything tagged with "bug" and "help
+wanted" is open to whoever wants to implement it.
+
+Implement Features
+~~~~~~~~~~~~~~~~~~
+
+Look through the GitHub issues for features. Anything tagged with "enhancement"
+and "help wanted" is open to whoever wants to implement it.
+
+Write Documentation
+~~~~~~~~~~~~~~~~~~~
+
+nexus could always use more documentation, whether as part of the
+official nexus docs, in docstrings, or even on the web in blog posts,
+articles, and such.
+
+Submit Feedback
+~~~~~~~~~~~~~~~
+
+The best way to send feedback is to file an issue at https://git.passcal.nmt.edu/passoft/nexus/issues.
+
+If you are proposing a feature:
+
+* Explain in detail how it would work.
+* Keep the scope as narrow as possible, to make it easier to implement.
+* Remember that this is a volunteer-driven project, and that contributions
+  are welcome :)
+
+Get Started!
+------------
+
+Ready to contribute? Here's how to set up `nexus` for local development.
+
+1. Cone the `nexus` repo::
+
+    $ git clone https://git.passcal.nmt.edu/passoft/nexus.git
+
+3. Install your local copy::
+
+    $ pip install -e .[dev]
+
+4. Create a branch for local development::
+
+    $ git checkout -b name-of-your-bugfix-or-feature
+
+   Now you can make your changes locally.
+
+5. When you're done making changes, check that your changes pass the
+   tests::
+
+    $ python setup.py test
+6. Commit your changes and push your branch to GitHub::
+
+    $ git add .
+    $ git commit -m "Your detailed description of your changes."
+    $ git push origin name-of-your-bugfix-or-feature
+
+7. Submit a merge request through the Gitlab website.
+
+Pull Request Guidelines
+-----------------------
+
+Before you submit a pull request, check that it meets these guidelines:
+
+1. The pull request should include tests.
+2. If the pull request adds functionality, the docs should be updated. Put
+   your new functionality into a function with a docstring, and add the
+   feature to the list in README.rst.
+3. The pull request should work for Python 2.7
+
+Tips
+----
+
+To run a subset of tests::
+    $ python -m unittest tests.test_nexus
+
+Deploying
+---------
+
+A reminder for the maintainers on how to deploy.
+Make sure all your changes are committed (including an entry in HISTORY.rst).
+Then run::
+
+$ git push
+$ git push --tags
+
diff --git a/HISTORY.rst b/HISTORY.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8a0d38c53ec5aa0b1bd0ec43e002716850ce897e
--- /dev/null
+++ b/HISTORY.rst
@@ -0,0 +1,8 @@
+=======
+History
+=======
+
+2018.149 (2018-05-29)
+------------------
+
+* First release on new build system.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..86c50abfa4e82e67f122159e5aae9cd30cb8b1e8
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,33 @@
+GNU GENERAL PUBLIC LICENSE
+                      Version 3, 29 June 2007
+
+    StationXML creation GUI
+    Copyright (C) 2018  IRIS PASSCAL
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000000000000000000000000000000000000..965b2dda7db7c49f68857dc3aea9af37e30a745e
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,11 @@
+include AUTHORS.rst
+include CONTRIBUTING.rst
+include HISTORY.rst
+include LICENSE
+include README.rst
+
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
+
+recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..5f1b500c47e1baabee20379cd300da1e8243fdc0
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,89 @@
+.PHONY: clean clean-test clean-pyc clean-build docs help
+.DEFAULT_GOAL := help
+
+define BROWSER_PYSCRIPT
+import os, webbrowser, sys
+
+try:
+	from urllib import pathname2url
+except:
+	from urllib.request import pathname2url
+
+webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
+endef
+export BROWSER_PYSCRIPT
+
+define PRINT_HELP_PYSCRIPT
+import re, sys
+
+for line in sys.stdin:
+	match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
+	if match:
+		target, help = match.groups()
+		print("%-20s %s" % (target, help))
+endef
+export PRINT_HELP_PYSCRIPT
+
+BROWSER := python -c "$$BROWSER_PYSCRIPT"
+
+help:
+	@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
+
+clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
+
+clean-build: ## remove build artifacts
+	rm -fr build/
+	rm -fr dist/
+	rm -fr .eggs/
+	find . -name '*.egg-info' -exec rm -fr {} +
+	find . -name '*.egg' -exec rm -f {} +
+
+clean-pyc: ## remove Python file artifacts
+	find . -name '*.pyc' -exec rm -f {} +
+	find . -name '*.pyo' -exec rm -f {} +
+	find . -name '*~' -exec rm -f {} +
+	find . -name '__pycache__' -exec rm -fr {} +
+
+clean-test: ## remove test and coverage artifacts
+	rm -fr .tox/
+	rm -f .coverage
+	rm -fr htmlcov/
+	rm -fr .pytest_cache
+
+lint: ## check style with flake8
+	flake8 nexus tests
+
+test: ## run tests quickly with the default Python
+	python setup.py test
+
+
+test-all: ## run tests on every Python version with tox
+	tox
+
+coverage: ## check code coverage quickly with the default Python
+	coverage run --source nexus setup.py test
+	coverage report -m
+	coverage html
+	$(BROWSER) htmlcov/index.html
+
+docs: ## generate Sphinx HTML documentation, including API docs
+	rm -f docs/nexus.rst
+	rm -f docs/modules.rst
+	sphinx-apidoc -o docs/ nexus
+	$(MAKE) -C docs clean
+	$(MAKE) -C docs html
+	$(BROWSER) docs/_build/html/index.html
+
+servedocs: docs ## compile the docs watching for changes
+	watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .
+
+release: dist ## package and upload a release
+	twine upload dist/*
+
+dist: clean ## builds source and wheel package
+	python setup.py sdist
+	python setup.py bdist_wheel
+	ls -l dist
+
+install: clean ## install the package to the active Python's site-packages
+	python setup.py install
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000000000000000000000000000000000000..516dd88c6de5b9179fa29dc9393244c4e4042fcc
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,24 @@
+=====
+nexus
+=====
+
+
+StationXML creation GUI
+
+
+* Free software: GNU General Public License v3 (GPLv3)
+
+
+
+Features
+--------
+
+* TODO
+
+Credits
+-------
+
+This package was created with Cookiecutter_ and the `passoft/cookiecutter`_ project template.
+
+.. _Cookiecutter: https://github.com/audreyr/cookiecutter
+.. _`passoft/cookiecutter`: https://git.passcal.nmt.edu/passoft/cookiecutter
diff --git a/cookie/nexus/.editorconfig b/cookie/nexus/.editorconfig
new file mode 100644
index 0000000000000000000000000000000000000000..d4a2c4405ec2e962c521a13af91bf5f7098a62a8
--- /dev/null
+++ b/cookie/nexus/.editorconfig
@@ -0,0 +1,21 @@
+# http://editorconfig.org
+
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+trim_trailing_whitespace = true
+insert_final_newline = true
+charset = utf-8
+end_of_line = lf
+
+[*.bat]
+indent_style = tab
+end_of_line = crlf
+
+[LICENSE]
+insert_final_newline = false
+
+[Makefile]
+indent_style = tab
diff --git a/cookie/nexus/.gitignore b/cookie/nexus/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..f61ca3b8cad7c2ff89f3129f223dff5d827da74b
--- /dev/null
+++ b/cookie/nexus/.gitignore
@@ -0,0 +1,107 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+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/
+.pytest_cache/
+
+# 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
+
+# dotenv
+.env
+
+# virtualenv
+.venv
+venv/
+ENV/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+
+#pycharm
+.idea/
+
+.DS_Store
diff --git a/cookie/nexus/.gitlab-ci.yml b/cookie/nexus/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..6524a3fd7cb85e8093c49e99c381fdbc7c0230c9
--- /dev/null
+++ b/cookie/nexus/.gitlab-ci.yml
@@ -0,0 +1,36 @@
+image: python
+
+# Change pip's cache directory to be inside the project directory since we can
+# only cache local items.
+variables:
+  PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache"
+
+# Pip's cache doesn't store the python packages
+# https://pip.pypa.io/en/stable/reference/pip_install/#caching
+#
+# If you want to also cache the installed packages, you have to install
+# them in a virtualenv and cache it as well.
+cache:
+  paths:
+    - .cache/pip
+
+stages:
+- test
+
+before_script:
+- pip install -e .[dev]
+
+
+python2:
+  image: python:2.7
+  tags:
+  - passoft
+  stage: test
+  script: tox -e py27
+
+python3:
+  image: python:3.6
+  tags:
+  - passoft
+  stage: test
+  script: tox -e py36
diff --git a/cookie/nexus/.gitlab/issue_templates/Bug.md b/cookie/nexus/.gitlab/issue_templates/Bug.md
new file mode 100644
index 0000000000000000000000000000000000000000..b41e508b17f5a9361c88756347ba0feefba36890
--- /dev/null
+++ b/cookie/nexus/.gitlab/issue_templates/Bug.md
@@ -0,0 +1,15 @@
+* nexus version:
+* Python version:
+* Operating System:
+
+### Description
+
+Describe what you were trying to get done.
+Tell us what happened, what went wrong, and what you expected to happen.
+
+### What I Did
+
+```
+Paste the command(s) you ran and the output.
+If there was a crash, please include the traceback here.
+```
diff --git a/cookie/nexus/AUTHORS.rst b/cookie/nexus/AUTHORS.rst
new file mode 100644
index 0000000000000000000000000000000000000000..82f4d5a62da982f312dde06653391810508258b0
--- /dev/null
+++ b/cookie/nexus/AUTHORS.rst
@@ -0,0 +1,13 @@
+=======
+Credits
+=======
+
+Development Lead
+----------------
+
+* IRIS PASSCAL <software-support@passcal.nmt.edu>
+
+Contributors
+------------
+
+None yet. Why not be the first?
diff --git a/cookie/nexus/CONTRIBUTING.rst b/cookie/nexus/CONTRIBUTING.rst
new file mode 100644
index 0000000000000000000000000000000000000000..58d9d3577ecfc9f89195afc173982c3b69b3f35e
--- /dev/null
+++ b/cookie/nexus/CONTRIBUTING.rst
@@ -0,0 +1,114 @@
+.. highlight:: shell
+
+============
+Contributing
+============
+
+Contributions are welcome, and they are greatly appreciated! Every little bit
+helps, and credit will always be given.
+
+You can contribute in many ways:
+
+Types of Contributions
+----------------------
+
+Report Bugs
+~~~~~~~~~~~
+
+Report bugs at https://git.passcal.nmt.edu/passoft/nexus/issues.
+
+If you are reporting a bug, please include:
+
+* Your operating system name and version.
+* Any details about your local setup that might be helpful in troubleshooting.
+* Detailed steps to reproduce the bug.
+
+Fix Bugs
+~~~~~~~~
+
+Look through the GitHub issues for bugs. Anything tagged with "bug" and "help
+wanted" is open to whoever wants to implement it.
+
+Implement Features
+~~~~~~~~~~~~~~~~~~
+
+Look through the GitHub issues for features. Anything tagged with "enhancement"
+and "help wanted" is open to whoever wants to implement it.
+
+Write Documentation
+~~~~~~~~~~~~~~~~~~~
+
+nexus could always use more documentation, whether as part of the
+official nexus docs, in docstrings, or even on the web in blog posts,
+articles, and such.
+
+Submit Feedback
+~~~~~~~~~~~~~~~
+
+The best way to send feedback is to file an issue at https://git.passcal.nmt.edu/passoft/nexus/issues.
+
+If you are proposing a feature:
+
+* Explain in detail how it would work.
+* Keep the scope as narrow as possible, to make it easier to implement.
+* Remember that this is a volunteer-driven project, and that contributions
+  are welcome :)
+
+Get Started!
+------------
+
+Ready to contribute? Here's how to set up `nexus` for local development.
+
+1. Cone the `nexus` repo::
+
+    $ git clone https://git.passcal.nmt.edu/passoft/nexus.git
+
+3. Install your local copy::
+
+    $ pip install -e .[dev]
+
+4. Create a branch for local development::
+
+    $ git checkout -b name-of-your-bugfix-or-feature
+
+   Now you can make your changes locally.
+
+5. When you're done making changes, check that your changes pass the
+   tests::
+
+    $ python setup.py test
+6. Commit your changes and push your branch to GitHub::
+
+    $ git add .
+    $ git commit -m "Your detailed description of your changes."
+    $ git push origin name-of-your-bugfix-or-feature
+
+7. Submit a merge request through the Gitlab website.
+
+Pull Request Guidelines
+-----------------------
+
+Before you submit a pull request, check that it meets these guidelines:
+
+1. The pull request should include tests.
+2. If the pull request adds functionality, the docs should be updated. Put
+   your new functionality into a function with a docstring, and add the
+   feature to the list in README.rst.
+3. The pull request should work for Python 2.7
+
+Tips
+----
+
+To run a subset of tests::
+    $ python -m unittest tests.test_nexus
+
+Deploying
+---------
+
+A reminder for the maintainers on how to deploy.
+Make sure all your changes are committed (including an entry in HISTORY.rst).
+Then run::
+
+$ git push
+$ git push --tags
+
diff --git a/cookie/nexus/HISTORY.rst b/cookie/nexus/HISTORY.rst
new file mode 100644
index 0000000000000000000000000000000000000000..8a0d38c53ec5aa0b1bd0ec43e002716850ce897e
--- /dev/null
+++ b/cookie/nexus/HISTORY.rst
@@ -0,0 +1,8 @@
+=======
+History
+=======
+
+2018.149 (2018-05-29)
+------------------
+
+* First release on new build system.
diff --git a/cookie/nexus/LICENSE b/cookie/nexus/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..86c50abfa4e82e67f122159e5aae9cd30cb8b1e8
--- /dev/null
+++ b/cookie/nexus/LICENSE
@@ -0,0 +1,33 @@
+GNU GENERAL PUBLIC LICENSE
+                      Version 3, 29 June 2007
+
+    StationXML creation GUI
+    Copyright (C) 2018  IRIS PASSCAL
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/cookie/nexus/MANIFEST.in b/cookie/nexus/MANIFEST.in
new file mode 100644
index 0000000000000000000000000000000000000000..965b2dda7db7c49f68857dc3aea9af37e30a745e
--- /dev/null
+++ b/cookie/nexus/MANIFEST.in
@@ -0,0 +1,11 @@
+include AUTHORS.rst
+include CONTRIBUTING.rst
+include HISTORY.rst
+include LICENSE
+include README.rst
+
+recursive-include tests *
+recursive-exclude * __pycache__
+recursive-exclude * *.py[co]
+
+recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif
diff --git a/cookie/nexus/Makefile b/cookie/nexus/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..5f1b500c47e1baabee20379cd300da1e8243fdc0
--- /dev/null
+++ b/cookie/nexus/Makefile
@@ -0,0 +1,89 @@
+.PHONY: clean clean-test clean-pyc clean-build docs help
+.DEFAULT_GOAL := help
+
+define BROWSER_PYSCRIPT
+import os, webbrowser, sys
+
+try:
+	from urllib import pathname2url
+except:
+	from urllib.request import pathname2url
+
+webbrowser.open("file://" + pathname2url(os.path.abspath(sys.argv[1])))
+endef
+export BROWSER_PYSCRIPT
+
+define PRINT_HELP_PYSCRIPT
+import re, sys
+
+for line in sys.stdin:
+	match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
+	if match:
+		target, help = match.groups()
+		print("%-20s %s" % (target, help))
+endef
+export PRINT_HELP_PYSCRIPT
+
+BROWSER := python -c "$$BROWSER_PYSCRIPT"
+
+help:
+	@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
+
+clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
+
+clean-build: ## remove build artifacts
+	rm -fr build/
+	rm -fr dist/
+	rm -fr .eggs/
+	find . -name '*.egg-info' -exec rm -fr {} +
+	find . -name '*.egg' -exec rm -f {} +
+
+clean-pyc: ## remove Python file artifacts
+	find . -name '*.pyc' -exec rm -f {} +
+	find . -name '*.pyo' -exec rm -f {} +
+	find . -name '*~' -exec rm -f {} +
+	find . -name '__pycache__' -exec rm -fr {} +
+
+clean-test: ## remove test and coverage artifacts
+	rm -fr .tox/
+	rm -f .coverage
+	rm -fr htmlcov/
+	rm -fr .pytest_cache
+
+lint: ## check style with flake8
+	flake8 nexus tests
+
+test: ## run tests quickly with the default Python
+	python setup.py test
+
+
+test-all: ## run tests on every Python version with tox
+	tox
+
+coverage: ## check code coverage quickly with the default Python
+	coverage run --source nexus setup.py test
+	coverage report -m
+	coverage html
+	$(BROWSER) htmlcov/index.html
+
+docs: ## generate Sphinx HTML documentation, including API docs
+	rm -f docs/nexus.rst
+	rm -f docs/modules.rst
+	sphinx-apidoc -o docs/ nexus
+	$(MAKE) -C docs clean
+	$(MAKE) -C docs html
+	$(BROWSER) docs/_build/html/index.html
+
+servedocs: docs ## compile the docs watching for changes
+	watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D .
+
+release: dist ## package and upload a release
+	twine upload dist/*
+
+dist: clean ## builds source and wheel package
+	python setup.py sdist
+	python setup.py bdist_wheel
+	ls -l dist
+
+install: clean ## install the package to the active Python's site-packages
+	python setup.py install
diff --git a/cookie/nexus/README.rst b/cookie/nexus/README.rst
new file mode 100644
index 0000000000000000000000000000000000000000..516dd88c6de5b9179fa29dc9393244c4e4042fcc
--- /dev/null
+++ b/cookie/nexus/README.rst
@@ -0,0 +1,24 @@
+=====
+nexus
+=====
+
+
+StationXML creation GUI
+
+
+* Free software: GNU General Public License v3 (GPLv3)
+
+
+
+Features
+--------
+
+* TODO
+
+Credits
+-------
+
+This package was created with Cookiecutter_ and the `passoft/cookiecutter`_ project template.
+
+.. _Cookiecutter: https://github.com/audreyr/cookiecutter
+.. _`passoft/cookiecutter`: https://git.passcal.nmt.edu/passoft/cookiecutter
diff --git a/cookie/nexus/docs/Makefile b/cookie/nexus/docs/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..3f03c3307f6a44ed7eb7e8fef23e19eaa65844dd
--- /dev/null
+++ b/cookie/nexus/docs/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = python -msphinx
+SPHINXPROJ    = nexus
+SOURCEDIR     = .
+BUILDDIR      = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/cookie/nexus/docs/authors.rst b/cookie/nexus/docs/authors.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e122f914a87b277e565fc9567af1a7545ec9872b
--- /dev/null
+++ b/cookie/nexus/docs/authors.rst
@@ -0,0 +1 @@
+.. include:: ../AUTHORS.rst
diff --git a/cookie/nexus/docs/conf.py b/cookie/nexus/docs/conf.py
new file mode 100755
index 0000000000000000000000000000000000000000..59e5a33b730e7f70cee1442ad772944d642cd9c4
--- /dev/null
+++ b/cookie/nexus/docs/conf.py
@@ -0,0 +1,163 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# nexus documentation build configuration file, created by
+# sphinx-quickstart on Fri Jun  9 13:47:02 2017.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another
+# directory, add these directories to sys.path here. If the directory is
+# relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#
+import os
+import sys
+sys.path.insert(0, os.path.abspath('..'))
+
+import nexus
+
+# -- General configuration ---------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'nexus'
+copyright = u"2018, IRIS PASSCAL"
+author = u"IRIS PASSCAL"
+
+# The version info for the project you're documenting, acts as replacement
+# for |version| and |release|, also used in various other places throughout
+# the built documents.
+#
+# The short X.Y version.
+version = nexus.__version__
+# The full version, including alpha/beta/rc tags.
+release = nexus.__version__
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This patterns also effect to html_static_path and html_extra_path
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = False
+
+
+# -- Options for HTML output -------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'alabaster'
+
+# Theme options are theme-specific and customize the look and feel of a
+# theme further.  For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+
+# -- Options for HTMLHelp output ---------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'nexusdoc'
+
+
+# -- Options for LaTeX output ------------------------------------------
+
+latex_elements = {
+    # The paper size ('letterpaper' or 'a4paper').
+    #
+    # 'papersize': 'letterpaper',
+
+    # The font size ('10pt', '11pt' or '12pt').
+    #
+    # 'pointsize': '10pt',
+
+    # Additional stuff for the LaTeX preamble.
+    #
+    # 'preamble': '',
+
+    # Latex figure (float) alignment
+    #
+    # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass
+# [howto, manual, or own class]).
+latex_documents = [
+    (master_doc, 'nexus.tex',
+     u'nexus Documentation',
+     u'IRIS PASSCAL', 'manual'),
+]
+
+
+# -- Options for manual page output ------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'nexus',
+     u'nexus Documentation',
+     [author], 1)
+]
+
+
+# -- Options for Texinfo output ----------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'nexus',
+     u'nexus Documentation',
+     author,
+     'nexus',
+     'One line description of project.',
+     'Miscellaneous'),
+]
+
+
+
diff --git a/cookie/nexus/docs/contributing.rst b/cookie/nexus/docs/contributing.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e582053ea018c369be05aae96cf730744f1dc616
--- /dev/null
+++ b/cookie/nexus/docs/contributing.rst
@@ -0,0 +1 @@
+.. include:: ../CONTRIBUTING.rst
diff --git a/cookie/nexus/docs/history.rst b/cookie/nexus/docs/history.rst
new file mode 100644
index 0000000000000000000000000000000000000000..250649964bbc36f4bec2942f69238aa6f7c02c1a
--- /dev/null
+++ b/cookie/nexus/docs/history.rst
@@ -0,0 +1 @@
+.. include:: ../HISTORY.rst
diff --git a/cookie/nexus/docs/index.rst b/cookie/nexus/docs/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5ae2cbf4da4f0a2ba663005a9e557cb3437d45b6
--- /dev/null
+++ b/cookie/nexus/docs/index.rst
@@ -0,0 +1,20 @@
+Welcome to nexus's documentation!
+======================================
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   readme
+   installation
+   usage
+   modules
+   contributing
+   authors
+   history
+
+Indices and tables
+==================
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/cookie/nexus/docs/installation.rst b/cookie/nexus/docs/installation.rst
new file mode 100644
index 0000000000000000000000000000000000000000..9d58fcd40a4bc008b3e8169b3c359737d1811c3b
--- /dev/null
+++ b/cookie/nexus/docs/installation.rst
@@ -0,0 +1,51 @@
+.. highlight:: shell
+
+============
+Installation
+============
+
+
+Stable release
+--------------
+
+To install nexus, run this command in your terminal:
+
+.. code-block:: console
+
+    $ pip install nexus
+
+This is the preferred method to install nexus, as it will always install the most recent stable release.
+
+If you don't have `pip`_ installed, this `Python installation guide`_ can guide
+you through the process.
+
+.. _pip: https://pip.pypa.io
+.. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/
+
+
+From sources
+------------
+
+The sources for nexus can be downloaded from the `Github repo`_.
+
+You can either clone the public repository:
+
+.. code-block:: console
+
+    $ git clone https://git.passcal.nmt.edu/passoft/nexus
+
+Or download the `tarball`_:
+
+.. code-block:: console
+
+    $ curl  -OL https://git.passcal.nmt.edu/passoft/nexus/tarball/master
+
+Once you have a copy of the source, you can install it with:
+
+.. code-block:: console
+
+    $ python setup.py install
+
+
+.. _Github repo: https://git.passcal.nmt.edu/passoft/nexus
+.. _tarball: https://git.passcal.nmt.edu/passoft/nexus/tarball/master
diff --git a/cookie/nexus/docs/make.bat b/cookie/nexus/docs/make.bat
new file mode 100644
index 0000000000000000000000000000000000000000..bdff72501e7d359a66b4da2183a13167e1974334
--- /dev/null
+++ b/cookie/nexus/docs/make.bat
@@ -0,0 +1,36 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=python -msphinx
+)
+set SOURCEDIR=.
+set BUILDDIR=_build
+set SPHINXPROJ=nexus
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+	echo.
+	echo.The Sphinx module was not found. Make sure you have Sphinx installed,
+	echo.then set the SPHINXBUILD environment variable to point to the full
+	echo.path of the 'sphinx-build' executable. Alternatively you may add the
+	echo.Sphinx directory to PATH.
+	echo.
+	echo.If you don't have Sphinx installed, grab it from
+	echo.http://sphinx-doc.org/
+	exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+
+:end
+popd
diff --git a/cookie/nexus/docs/readme.rst b/cookie/nexus/docs/readme.rst
new file mode 100644
index 0000000000000000000000000000000000000000..72a33558153fb57def85612b021ec596ef2a51b9
--- /dev/null
+++ b/cookie/nexus/docs/readme.rst
@@ -0,0 +1 @@
+.. include:: ../README.rst
diff --git a/cookie/nexus/docs/usage.rst b/cookie/nexus/docs/usage.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f570c8de90d9a053a7a533c9d824f055a153af33
--- /dev/null
+++ b/cookie/nexus/docs/usage.rst
@@ -0,0 +1,7 @@
+=====
+Usage
+=====
+
+To use nexus in a project::
+
+    import nexus
diff --git a/cookie/nexus/nexus/__init__.py b/cookie/nexus/nexus/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..d21a53fdf442a13e5f61d70ddf76686d4bdad64c
--- /dev/null
+++ b/cookie/nexus/nexus/__init__.py
@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+
+"""Top-level package for nexus."""
+
+__author__ = """IRIS PASSCAL"""
+__email__ = 'software-support@passcal.nmt.edu'
+__version__ = '2018.149'
diff --git a/cookie/nexus/setup.cfg b/cookie/nexus/setup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..96f1818f81463c363e838a253c12a4214d131877
--- /dev/null
+++ b/cookie/nexus/setup.cfg
@@ -0,0 +1,22 @@
+[bumpversion]
+current_version = 2018.149
+commit = True
+tag = True
+
+[bumpversion:file:setup.py]
+search = version='{current_version}'
+replace = version='{new_version}'
+
+[bumpversion:file:nexus/__init__.py]
+search = __version__ = '{current_version}'
+replace = __version__ = '{new_version}'
+
+[bdist_wheel]
+universal = 1
+
+[flake8]
+exclude = docs
+
+[aliases]
+# Define setup.py command aliases here
+
diff --git a/cookie/nexus/setup.py b/cookie/nexus/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..b555ddd61515def31873b41b6c742b836e490525
--- /dev/null
+++ b/cookie/nexus/setup.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""The setup script."""
+
+from setuptools import setup, find_packages
+
+with open('README.rst') as readme_file:
+    readme = readme_file.read()
+
+with open('HISTORY.rst') as history_file:
+    history = history_file.read()
+
+
+setup(
+    author="IRIS PASSCAL",
+    author_email='software-support@passcal.nmt.edu',
+    classifiers=[
+        'Development Status :: 5 - Production/Stable',
+        'Intended Audience :: Developers',
+        'License :: OSI Approved ::  GNU General Public License v3 (GPLv3)',
+        'Natural Language :: English',
+        'Programming Language :: Python :: 2.7',
+    ],
+    description="StationXML creation GUI",
+    entry_points={
+        'console_scripts': [
+            'nexus=nexus.nexus:main',
+        ],
+    },
+    install_requires=[],
+    setup_requires = [],
+    extras_require={
+        'dev': [
+            'pip',
+            'bumpversion',
+            'wheel',
+            'watchdog',
+            'flake8',
+            'tox',
+            'coverage',
+            'Sphinx',
+            'twine',
+        ]
+    },
+    license="GNU General Public License v3",
+    long_description=readme + '\n\n' + history,
+    include_package_data=True,
+    keywords='nexus',
+    name='nexus',
+    packages=find_packages(include=['nexus']),
+    test_suite='tests',
+    url='https://git.passcal.nmt.edu/passoft/nexus',
+    version='2018.149',
+    zip_safe=False,
+)
diff --git a/cookie/nexus/tests/__init__.py b/cookie/nexus/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..1266ab3e45d94a74127d524a6013b26a13e85c26
--- /dev/null
+++ b/cookie/nexus/tests/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+"""Unit test package for nexus."""
diff --git a/cookie/nexus/tests/test_nexus.py b/cookie/nexus/tests/test_nexus.py
new file mode 100644
index 0000000000000000000000000000000000000000..d9ae8c7436a31a46214f42271dcf1d83ef4f551d
--- /dev/null
+++ b/cookie/nexus/tests/test_nexus.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""Tests for `nexus` package."""
+
+import unittest
+import sys
+
+try:
+    import nexus
+except ImportError:
+     pass
+
+class TestNexus(unittest.TestCase):
+    """Tests for `nexus` package."""
+
+    def setUp(self):
+        """Set up test fixtures, if any."""
+
+    def tearDown(self):
+        """Tear down test fixtures, if any."""
+
+    def test_import(self):
+        if 'nexus' in sys.modules:
+            self.assert_(True, "nexus loaded")
+        else:
+            self.fail()
+
diff --git a/cookie/nexus/tox.ini b/cookie/nexus/tox.ini
new file mode 100644
index 0000000000000000000000000000000000000000..5926ad567503bcb6e6bc37195891bc6a45801bf4
--- /dev/null
+++ b/cookie/nexus/tox.ini
@@ -0,0 +1,19 @@
+[tox]
+envlist = py27, py36 flake8
+
+[travis]
+python =
+    2.7: py27
+    3.6: py36
+
+[testenv:flake8]
+basepython = python
+deps = flake8
+commands = flake8 nexus
+
+[testenv]
+setenv =
+    PYTHONPATH = {toxinidir}
+commands=python setup.py test
+
+
diff --git a/docs/Makefile b/docs/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..3f03c3307f6a44ed7eb7e8fef23e19eaa65844dd
--- /dev/null
+++ b/docs/Makefile
@@ -0,0 +1,20 @@
+# Minimal makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = python -msphinx
+SPHINXPROJ    = nexus
+SOURCEDIR     = .
+BUILDDIR      = _build
+
+# Put it first so that "make" without argument is like "make help".
+help:
+	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+.PHONY: help Makefile
+
+# Catch-all target: route all unknown targets to Sphinx using the new
+# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
+%: Makefile
+	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/docs/authors.rst b/docs/authors.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e122f914a87b277e565fc9567af1a7545ec9872b
--- /dev/null
+++ b/docs/authors.rst
@@ -0,0 +1 @@
+.. include:: ../AUTHORS.rst
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100755
index 0000000000000000000000000000000000000000..59e5a33b730e7f70cee1442ad772944d642cd9c4
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,163 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# nexus documentation build configuration file, created by
+# sphinx-quickstart on Fri Jun  9 13:47:02 2017.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+# If extensions (or modules to document with autodoc) are in another
+# directory, add these directories to sys.path here. If the directory is
+# relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#
+import os
+import sys
+sys.path.insert(0, os.path.abspath('..'))
+
+import nexus
+
+# -- General configuration ---------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#
+# needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.viewcode']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+#
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'nexus'
+copyright = u"2018, IRIS PASSCAL"
+author = u"IRIS PASSCAL"
+
+# The version info for the project you're documenting, acts as replacement
+# for |version| and |release|, also used in various other places throughout
+# the built documents.
+#
+# The short X.Y version.
+version = nexus.__version__
+# The full version, including alpha/beta/rc tags.
+release = nexus.__version__
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = None
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+# This patterns also effect to html_static_path and html_extra_path
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = False
+
+
+# -- Options for HTML output -------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+#
+html_theme = 'alabaster'
+
+# Theme options are theme-specific and customize the look and feel of a
+# theme further.  For a list of options available for each theme, see the
+# documentation.
+#
+# html_theme_options = {}
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+
+# -- Options for HTMLHelp output ---------------------------------------
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'nexusdoc'
+
+
+# -- Options for LaTeX output ------------------------------------------
+
+latex_elements = {
+    # The paper size ('letterpaper' or 'a4paper').
+    #
+    # 'papersize': 'letterpaper',
+
+    # The font size ('10pt', '11pt' or '12pt').
+    #
+    # 'pointsize': '10pt',
+
+    # Additional stuff for the LaTeX preamble.
+    #
+    # 'preamble': '',
+
+    # Latex figure (float) alignment
+    #
+    # 'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass
+# [howto, manual, or own class]).
+latex_documents = [
+    (master_doc, 'nexus.tex',
+     u'nexus Documentation',
+     u'IRIS PASSCAL', 'manual'),
+]
+
+
+# -- Options for manual page output ------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'nexus',
+     u'nexus Documentation',
+     [author], 1)
+]
+
+
+# -- Options for Texinfo output ----------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'nexus',
+     u'nexus Documentation',
+     author,
+     'nexus',
+     'One line description of project.',
+     'Miscellaneous'),
+]
+
+
+
diff --git a/docs/contributing.rst b/docs/contributing.rst
new file mode 100644
index 0000000000000000000000000000000000000000..e582053ea018c369be05aae96cf730744f1dc616
--- /dev/null
+++ b/docs/contributing.rst
@@ -0,0 +1 @@
+.. include:: ../CONTRIBUTING.rst
diff --git a/docs/history.rst b/docs/history.rst
new file mode 100644
index 0000000000000000000000000000000000000000..250649964bbc36f4bec2942f69238aa6f7c02c1a
--- /dev/null
+++ b/docs/history.rst
@@ -0,0 +1 @@
+.. include:: ../HISTORY.rst
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5ae2cbf4da4f0a2ba663005a9e557cb3437d45b6
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,20 @@
+Welcome to nexus's documentation!
+======================================
+
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+
+   readme
+   installation
+   usage
+   modules
+   contributing
+   authors
+   history
+
+Indices and tables
+==================
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff --git a/docs/installation.rst b/docs/installation.rst
new file mode 100644
index 0000000000000000000000000000000000000000..9d58fcd40a4bc008b3e8169b3c359737d1811c3b
--- /dev/null
+++ b/docs/installation.rst
@@ -0,0 +1,51 @@
+.. highlight:: shell
+
+============
+Installation
+============
+
+
+Stable release
+--------------
+
+To install nexus, run this command in your terminal:
+
+.. code-block:: console
+
+    $ pip install nexus
+
+This is the preferred method to install nexus, as it will always install the most recent stable release.
+
+If you don't have `pip`_ installed, this `Python installation guide`_ can guide
+you through the process.
+
+.. _pip: https://pip.pypa.io
+.. _Python installation guide: http://docs.python-guide.org/en/latest/starting/installation/
+
+
+From sources
+------------
+
+The sources for nexus can be downloaded from the `Github repo`_.
+
+You can either clone the public repository:
+
+.. code-block:: console
+
+    $ git clone https://git.passcal.nmt.edu/passoft/nexus
+
+Or download the `tarball`_:
+
+.. code-block:: console
+
+    $ curl  -OL https://git.passcal.nmt.edu/passoft/nexus/tarball/master
+
+Once you have a copy of the source, you can install it with:
+
+.. code-block:: console
+
+    $ python setup.py install
+
+
+.. _Github repo: https://git.passcal.nmt.edu/passoft/nexus
+.. _tarball: https://git.passcal.nmt.edu/passoft/nexus/tarball/master
diff --git a/docs/make.bat b/docs/make.bat
new file mode 100644
index 0000000000000000000000000000000000000000..bdff72501e7d359a66b4da2183a13167e1974334
--- /dev/null
+++ b/docs/make.bat
@@ -0,0 +1,36 @@
+@ECHO OFF
+
+pushd %~dp0
+
+REM Command file for Sphinx documentation
+
+if "%SPHINXBUILD%" == "" (
+	set SPHINXBUILD=python -msphinx
+)
+set SOURCEDIR=.
+set BUILDDIR=_build
+set SPHINXPROJ=nexus
+
+if "%1" == "" goto help
+
+%SPHINXBUILD% >NUL 2>NUL
+if errorlevel 9009 (
+	echo.
+	echo.The Sphinx module was not found. Make sure you have Sphinx installed,
+	echo.then set the SPHINXBUILD environment variable to point to the full
+	echo.path of the 'sphinx-build' executable. Alternatively you may add the
+	echo.Sphinx directory to PATH.
+	echo.
+	echo.If you don't have Sphinx installed, grab it from
+	echo.http://sphinx-doc.org/
+	exit /b 1
+)
+
+%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+goto end
+
+:help
+%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
+
+:end
+popd
diff --git a/docs/readme.rst b/docs/readme.rst
new file mode 100644
index 0000000000000000000000000000000000000000..72a33558153fb57def85612b021ec596ef2a51b9
--- /dev/null
+++ b/docs/readme.rst
@@ -0,0 +1 @@
+.. include:: ../README.rst
diff --git a/docs/usage.rst b/docs/usage.rst
new file mode 100644
index 0000000000000000000000000000000000000000..f570c8de90d9a053a7a533c9d824f055a153af33
--- /dev/null
+++ b/docs/usage.rst
@@ -0,0 +1,7 @@
+=====
+Usage
+=====
+
+To use nexus in a project::
+
+    import nexus
diff --git a/nexus/__init__.py b/nexus/__init__.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d21a53fdf442a13e5f61d70ddf76686d4bdad64c 100644
--- a/nexus/__init__.py
+++ b/nexus/__init__.py
@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+
+"""Top-level package for nexus."""
+
+__author__ = """IRIS PASSCAL"""
+__email__ = 'software-support@passcal.nmt.edu'
+__version__ = '2018.149'
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..96f1818f81463c363e838a253c12a4214d131877
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,22 @@
+[bumpversion]
+current_version = 2018.149
+commit = True
+tag = True
+
+[bumpversion:file:setup.py]
+search = version='{current_version}'
+replace = version='{new_version}'
+
+[bumpversion:file:nexus/__init__.py]
+search = __version__ = '{current_version}'
+replace = __version__ = '{new_version}'
+
+[bdist_wheel]
+universal = 1
+
+[flake8]
+exclude = docs
+
+[aliases]
+# Define setup.py command aliases here
+
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..b555ddd61515def31873b41b6c742b836e490525
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""The setup script."""
+
+from setuptools import setup, find_packages
+
+with open('README.rst') as readme_file:
+    readme = readme_file.read()
+
+with open('HISTORY.rst') as history_file:
+    history = history_file.read()
+
+
+setup(
+    author="IRIS PASSCAL",
+    author_email='software-support@passcal.nmt.edu',
+    classifiers=[
+        'Development Status :: 5 - Production/Stable',
+        'Intended Audience :: Developers',
+        'License :: OSI Approved ::  GNU General Public License v3 (GPLv3)',
+        'Natural Language :: English',
+        'Programming Language :: Python :: 2.7',
+    ],
+    description="StationXML creation GUI",
+    entry_points={
+        'console_scripts': [
+            'nexus=nexus.nexus:main',
+        ],
+    },
+    install_requires=[],
+    setup_requires = [],
+    extras_require={
+        'dev': [
+            'pip',
+            'bumpversion',
+            'wheel',
+            'watchdog',
+            'flake8',
+            'tox',
+            'coverage',
+            'Sphinx',
+            'twine',
+        ]
+    },
+    license="GNU General Public License v3",
+    long_description=readme + '\n\n' + history,
+    include_package_data=True,
+    keywords='nexus',
+    name='nexus',
+    packages=find_packages(include=['nexus']),
+    test_suite='tests',
+    url='https://git.passcal.nmt.edu/passoft/nexus',
+    version='2018.149',
+    zip_safe=False,
+)
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..1266ab3e45d94a74127d524a6013b26a13e85c26
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+"""Unit test package for nexus."""
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..ACE.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..ACE.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..ACE.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..ACE.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..EH1.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..EH1.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..EH1.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..EH1.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..EH2.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..EH2.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..EH2.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..EH2.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..EHZ.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..EHZ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..EHZ.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..EHZ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..LCE.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..LCE.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..LCE.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..LCE.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..LCQ.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..LCQ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..LCQ.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..LCQ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..LOG.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..LOG.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..LOG.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..LOG.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..OCF.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..OCF.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..OCF.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..OCF.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..SH1.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..SH1.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..SH1.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..SH1.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..SH2.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..SH2.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..SH2.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..SH2.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..SHZ.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..SHZ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..SHZ.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..SHZ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..VCO.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..VCO.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..VCO.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..VCO.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..VEA.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..VEA.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..VEA.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..VEA.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..VEC.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..VEC.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..VEC.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..VEC.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..VEP.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..VEP.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..VEP.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..VEP.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..VKI.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..VKI.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..VKI.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..VKI.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/MIST.XJ..VPB.2016.251 b/tests/data/Q330_XJ.2016/MIST.XJ..VPB.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/MIST.XJ..VPB.2016.251
rename to tests/data/Q330_XJ.2016/MIST.XJ..VPB.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..ACE.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..ACE.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..ACE.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..ACE.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..EH1.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..EH1.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..EH1.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..EH1.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..EH2.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..EH2.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..EH2.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..EH2.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..EHZ.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..EHZ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..EHZ.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..EHZ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..LCE.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..LCE.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..LCE.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..LCE.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..LCQ.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..LCQ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..LCQ.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..LCQ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..LOG.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..LOG.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..LOG.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..LOG.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..OCF.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..OCF.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..OCF.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..OCF.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..SH1.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..SH1.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..SH1.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..SH1.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..SH2.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..SH2.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..SH2.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..SH2.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..SHZ.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..SHZ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..SHZ.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..SHZ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..VCO.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..VCO.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..VCO.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..VCO.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..VEA.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..VEA.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..VEA.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..VEA.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..VEC.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..VEC.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..VEC.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..VEC.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..VEP.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..VEP.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..VEP.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..VEP.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..VKI.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..VKI.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..VKI.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..VKI.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/RAIN.XJ..VPB.2016.251 b/tests/data/Q330_XJ.2016/RAIN.XJ..VPB.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/RAIN.XJ..VPB.2016.251
rename to tests/data/Q330_XJ.2016/RAIN.XJ..VPB.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..ACE.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..ACE.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..ACE.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..ACE.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..EH1.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..EH1.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..EH1.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..EH1.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..EH2.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..EH2.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..EH2.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..EH2.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..EHZ.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..EHZ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..EHZ.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..EHZ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..LCE.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..LCE.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..LCE.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..LCE.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..LCQ.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..LCQ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..LCQ.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..LCQ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..LOG.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..LOG.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..LOG.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..LOG.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..OCF.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..OCF.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..OCF.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..OCF.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..SH1.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..SH1.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..SH1.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..SH1.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..SH2.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..SH2.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..SH2.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..SH2.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..SHZ.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..SHZ.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..SHZ.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..SHZ.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..VCO.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..VCO.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..VCO.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..VCO.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..VEA.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..VEA.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..VEA.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..VEA.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..VEC.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..VEC.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..VEC.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..VEC.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..VEP.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..VEP.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..VEP.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..VEP.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..VKI.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..VKI.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..VKI.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..VKI.2016.251
diff --git a/nexus/test/data/Q330_XJ.2016/SNOW.XJ..VPB.2016.251 b/tests/data/Q330_XJ.2016/SNOW.XJ..VPB.2016.251
similarity index 100%
rename from nexus/test/data/Q330_XJ.2016/SNOW.XJ..VPB.2016.251
rename to tests/data/Q330_XJ.2016/SNOW.XJ..VPB.2016.251
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHE.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHE.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHE.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHE.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHN.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHN.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHN.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHN.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHZ.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHZ.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHZ.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..HHZ.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHE.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHE.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHE.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHE.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHN.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHN.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHN.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHN.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHZ.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHZ.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHZ.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..LHZ.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM1.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM1.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM1.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM1.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM2.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM2.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM2.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM2.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM3.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM3.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM3.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/EC04.6E..VM3.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHE.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHE.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHE.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHE.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHN.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHN.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHN.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHN.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHZ.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHZ.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHZ.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..HHZ.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHE.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHE.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHE.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHE.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHN.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHN.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHN.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHN.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHZ.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHZ.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHZ.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S1/WB10.6E..LHZ.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHE.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHE.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHE.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHE.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHN.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHN.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHN.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHN.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHZ.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHZ.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHZ.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..HHZ.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHE.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHE.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHE.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHE.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHN.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHN.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHN.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHN.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHZ.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHZ.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHZ.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..LHZ.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM1.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM1.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM1.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM1.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM2.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM2.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM2.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM2.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM3.2016.320 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM3.2016.320
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM3.2016.320
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/EC04.6E..VM3.2016.320
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHE.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHE.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHE.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHE.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHN.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHN.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHN.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHN.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHZ.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHZ.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHZ.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..BHZ.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHE.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHE.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHE.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHE.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHN.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHN.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHN.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHN.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHZ.2015.070 b/tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHZ.2015.070
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHZ.2015.070
rename to tests/data/alissa_fail_incorrect_extention_after_split/S2/WB10.6E..LHZ.2015.070
diff --git a/nexus/test/data/alissa_fail_incorrect_extention_after_split/test-s1-2017264 b/tests/data/alissa_fail_incorrect_extention_after_split/test-s1-2017264
similarity index 100%
rename from nexus/test/data/alissa_fail_incorrect_extention_after_split/test-s1-2017264
rename to tests/data/alissa_fail_incorrect_extention_after_split/test-s1-2017264
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.248 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.248
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.248
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.248
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.249 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.249
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.249
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.249
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.250 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.250
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.250
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH1.2015.250
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.248 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.248
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.248
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.248
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.249 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.249
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.249
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.249
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.250 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.250
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.250
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HH2.2015.250
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.248 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.248
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.248
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.248
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.249 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.249
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.249
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.249
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.250 b/tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.250
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.250
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010.XQ..HHZ.2015.250
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/NA010_Batch b/tests/data/george_fail_cases/NA010_Service_Run/NA010_Batch
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/NA010_Batch
rename to tests/data/george_fail_cases/NA010_Service_Run/NA010_Batch
diff --git a/nexus/test/data/george_fail_cases/NA010_Service_Run/XQ.15.NA010.20172071523.dataless b/tests/data/george_fail_cases/NA010_Service_Run/XQ.15.NA010.20172071523.dataless
similarity index 100%
rename from nexus/test/data/george_fail_cases/NA010_Service_Run/XQ.15.NA010.20172071523.dataless
rename to tests/data/george_fail_cases/NA010_Service_Run/XQ.15.NA010.20172071523.dataless
diff --git a/nexus/test/data/ms_gen/ALMO.XE..CHE.2015.060 b/tests/data/ms_gen/ALMO.XE..CHE.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/ALMO.XE..CHE.2015.060
rename to tests/data/ms_gen/ALMO.XE..CHE.2015.060
diff --git a/nexus/test/data/ms_gen/ALMO.XE..CHN.2015.060 b/tests/data/ms_gen/ALMO.XE..CHN.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/ALMO.XE..CHN.2015.060
rename to tests/data/ms_gen/ALMO.XE..CHN.2015.060
diff --git a/nexus/test/data/ms_gen/ALMO.XE..CHZ.2015.060 b/tests/data/ms_gen/ALMO.XE..CHZ.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/ALMO.XE..CHZ.2015.060
rename to tests/data/ms_gen/ALMO.XE..CHZ.2015.060
diff --git a/nexus/test/data/ms_gen/ALMO.XE..LOG.2015.060 b/tests/data/ms_gen/ALMO.XE..LOG.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/ALMO.XE..LOG.2015.060
rename to tests/data/ms_gen/ALMO.XE..LOG.2015.060
diff --git a/nexus/test/data/ms_gen/ALMO.XE..VM1.2015.060 b/tests/data/ms_gen/ALMO.XE..VM1.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/ALMO.XE..VM1.2015.060
rename to tests/data/ms_gen/ALMO.XE..VM1.2015.060
diff --git a/nexus/test/data/ms_gen/ALMO.XE..VM2.2015.060 b/tests/data/ms_gen/ALMO.XE..VM2.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/ALMO.XE..VM2.2015.060
rename to tests/data/ms_gen/ALMO.XE..VM2.2015.060
diff --git a/nexus/test/data/ms_gen/ALMO.XE..VM3.2015.060 b/tests/data/ms_gen/ALMO.XE..VM3.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/ALMO.XE..VM3.2015.060
rename to tests/data/ms_gen/ALMO.XE..VM3.2015.060
diff --git a/nexus/test/data/ms_gen/BFTO.XE..CHE.2015.060 b/tests/data/ms_gen/BFTO.XE..CHE.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/BFTO.XE..CHE.2015.060
rename to tests/data/ms_gen/BFTO.XE..CHE.2015.060
diff --git a/nexus/test/data/ms_gen/BFTO.XE..CHN.2015.060 b/tests/data/ms_gen/BFTO.XE..CHN.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/BFTO.XE..CHN.2015.060
rename to tests/data/ms_gen/BFTO.XE..CHN.2015.060
diff --git a/nexus/test/data/ms_gen/BFTO.XE..CHZ.2015.060 b/tests/data/ms_gen/BFTO.XE..CHZ.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/BFTO.XE..CHZ.2015.060
rename to tests/data/ms_gen/BFTO.XE..CHZ.2015.060
diff --git a/nexus/test/data/ms_gen/BFTO.XE..LOG.2015.060 b/tests/data/ms_gen/BFTO.XE..LOG.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/BFTO.XE..LOG.2015.060
rename to tests/data/ms_gen/BFTO.XE..LOG.2015.060
diff --git a/nexus/test/data/ms_gen/BFTO.XE..VM1.2015.060 b/tests/data/ms_gen/BFTO.XE..VM1.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/BFTO.XE..VM1.2015.060
rename to tests/data/ms_gen/BFTO.XE..VM1.2015.060
diff --git a/nexus/test/data/ms_gen/BFTO.XE..VM2.2015.060 b/tests/data/ms_gen/BFTO.XE..VM2.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/BFTO.XE..VM2.2015.060
rename to tests/data/ms_gen/BFTO.XE..VM2.2015.060
diff --git a/nexus/test/data/ms_gen/BFTO.XE..VM3.2015.060 b/tests/data/ms_gen/BFTO.XE..VM3.2015.060
similarity index 100%
rename from nexus/test/data/ms_gen/BFTO.XE..VM3.2015.060
rename to tests/data/ms_gen/BFTO.XE..VM3.2015.060
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.351 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.351
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.351
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.351
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.352 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.352
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.352
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2015.352
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.006 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.006
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.006
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.006
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.007 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.007
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.007
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN1.2016.007
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.351 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.351
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.351
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.351
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.352 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.352
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.352
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2015.352
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.006 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.006
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.006
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.006
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.007 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.007
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.007
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HN2.2016.007
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.351 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.351
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.351
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.351
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.352 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.352
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.352
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2015.352
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.006 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.006
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.006
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.006
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.007 b/tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.007
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.007
rename to tests/data/sr_change/NAKRM/NAKRM.XQ..HNZ.2016.007
diff --git a/nexus/test/data/sr_change/NAKRM/NAKRM_Batch b/tests/data/sr_change/NAKRM/NAKRM_Batch
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/NAKRM_Batch
rename to tests/data/sr_change/NAKRM/NAKRM_Batch
diff --git a/nexus/test/data/sr_change/NAKRM/XQ.15.XQ.20171911034.dataless b/tests/data/sr_change/NAKRM/XQ.15.XQ.20171911034.dataless
similarity index 100%
rename from nexus/test/data/sr_change/NAKRM/XQ.15.XQ.20171911034.dataless
rename to tests/data/sr_change/NAKRM/XQ.15.XQ.20171911034.dataless
diff --git a/nexus/test/data/sr_change/NANST/NANST.XQ..HN1.2016.011 b/tests/data/sr_change/NANST/NANST.XQ..HN1.2016.011
similarity index 100%
rename from nexus/test/data/sr_change/NANST/NANST.XQ..HN1.2016.011
rename to tests/data/sr_change/NANST/NANST.XQ..HN1.2016.011
diff --git a/nexus/test/data/sr_change/NANST/NANST.XQ..HN2.2016.011 b/tests/data/sr_change/NANST/NANST.XQ..HN2.2016.011
similarity index 100%
rename from nexus/test/data/sr_change/NANST/NANST.XQ..HN2.2016.011
rename to tests/data/sr_change/NANST/NANST.XQ..HN2.2016.011
diff --git a/nexus/test/data/sr_change/NANST/NANST.XQ..HNZ.2016.011 b/tests/data/sr_change/NANST/NANST.XQ..HNZ.2016.011
similarity index 100%
rename from nexus/test/data/sr_change/NANST/NANST.XQ..HNZ.2016.011
rename to tests/data/sr_change/NANST/NANST.XQ..HNZ.2016.011
diff --git a/nexus/test/data/sr_change/NANST/NANST_Batch.txt b/tests/data/sr_change/NANST/NANST_Batch.txt
similarity index 100%
rename from nexus/test/data/sr_change/NANST/NANST_Batch.txt
rename to tests/data/sr_change/NANST/NANST_Batch.txt
diff --git a/nexus/test/data/sr_change/NANST/XQ.16.NANST.20171911114.dataless b/tests/data/sr_change/NANST/XQ.16.NANST.20171911114.dataless
similarity index 100%
rename from nexus/test/data/sr_change/NANST/XQ.16.NANST.20171911114.dataless
rename to tests/data/sr_change/NANST/XQ.16.NANST.20171911114.dataless
diff --git a/nexus/test/data/sr_change/XQ.16.SVC2_DB.20161390324.dataless b/tests/data/sr_change/XQ.16.SVC2_DB.20161390324.dataless
similarity index 100%
rename from nexus/test/data/sr_change/XQ.16.SVC2_DB.20161390324.dataless
rename to tests/data/sr_change/XQ.16.SVC2_DB.20161390324.dataless
diff --git a/nexus/test/data/xml/ANDIVOLC.xml b/tests/data/xml/ANDIVOLC.xml
similarity index 100%
rename from nexus/test/data/xml/ANDIVOLC.xml
rename to tests/data/xml/ANDIVOLC.xml
diff --git a/nexus/test/data/xml/BW_GR_misc.xml b/tests/data/xml/BW_GR_misc.xml
similarity index 100%
rename from nexus/test/data/xml/BW_GR_misc.xml
rename to tests/data/xml/BW_GR_misc.xml
diff --git a/nexus/test/data/xml/BW_RJOB.xml b/tests/data/xml/BW_RJOB.xml
similarity index 100%
rename from nexus/test/data/xml/BW_RJOB.xml
rename to tests/data/xml/BW_RJOB.xml
diff --git a/nexus/test/data/xml/IM_IL31__BHZ.xml b/tests/data/xml/IM_IL31__BHZ.xml
similarity index 100%
rename from nexus/test/data/xml/IM_IL31__BHZ.xml
rename to tests/data/xml/IM_IL31__BHZ.xml
diff --git a/nexus/test/data/xml/IU_ANMO_BH.xml b/tests/data/xml/IU_ANMO_BH.xml
similarity index 100%
rename from nexus/test/data/xml/IU_ANMO_BH.xml
rename to tests/data/xml/IU_ANMO_BH.xml
diff --git a/nexus/test/data/xml/NP.crashes.analog.stage2.xml b/tests/data/xml/NP.crashes.analog.stage2.xml
similarity index 100%
rename from nexus/test/data/xml/NP.crashes.analog.stage2.xml
rename to tests/data/xml/NP.crashes.analog.stage2.xml
diff --git a/nexus/test/data/xml/XE_with_dl_sn.xml b/tests/data/xml/XE_with_dl_sn.xml
similarity index 100%
rename from nexus/test/data/xml/XE_with_dl_sn.xml
rename to tests/data/xml/XE_with_dl_sn.xml
diff --git a/tests/test_nexus.py b/tests/test_nexus.py
new file mode 100644
index 0000000000000000000000000000000000000000..d9ae8c7436a31a46214f42271dcf1d83ef4f551d
--- /dev/null
+++ b/tests/test_nexus.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""Tests for `nexus` package."""
+
+import unittest
+import sys
+
+try:
+    import nexus
+except ImportError:
+     pass
+
+class TestNexus(unittest.TestCase):
+    """Tests for `nexus` package."""
+
+    def setUp(self):
+        """Set up test fixtures, if any."""
+
+    def tearDown(self):
+        """Tear down test fixtures, if any."""
+
+    def test_import(self):
+        if 'nexus' in sys.modules:
+            self.assert_(True, "nexus loaded")
+        else:
+            self.fail()
+
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000000000000000000000000000000000000..5926ad567503bcb6e6bc37195891bc6a45801bf4
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,19 @@
+[tox]
+envlist = py27, py36 flake8
+
+[travis]
+python =
+    2.7: py27
+    3.6: py36
+
+[testenv:flake8]
+basepython = python
+deps = flake8
+commands = flake8 nexus
+
+[testenv]
+setenv =
+    PYTHONPATH = {toxinidir}
+commands=python setup.py test
+
+