diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml
new file mode 100644
index 0000000000000000000000000000000000000000..dc45f1c63593a4678bcf49ad4c832d7c84ad419e
--- /dev/null
+++ b/bitbucket-pipelines.yml
@@ -0,0 +1,45 @@
+# This is a sample build configuration for Python.
+# Check our guides at https://confluence.atlassian.com/x/x4UWN for more examples.
+# Only use spaces to indent your .yml configuration.
+# -----
+# You can specify a custom docker image from Docker Hub as your build environment.
+image: continuumio/anaconda:latest
+
+pipelines:
+  default:
+    - step:
+        script: # Modify the commands below to build your repository.
+          - apt-get update -y && apt-get -y install libgl1-mesa-glx
+          - conda update -y conda
+          - conda env create -f environment.yml
+          - conda activate resultsanalysis
+          - cd ../
+          - git clone git@bitbucket.org:mdd31/xmlvalidator.git
+          - cd xmlvalidator
+          - pip install .
+          - cd ../
+          - git clone git@bitbucket.org:mdd31/phasexmlcreator.git
+          - cd phasexmlcreator
+          - pip install .
+          - cd ../
+          - git clone git@bitbucket.org:mdd31/phasexmlparser.git
+          - cd phasexmlparser
+          - pip install .
+          - cd ../
+          - git clone git@bitbucket.org:mdd31/resultsanalysis.git
+          - ls
+          - cd resultsanalysis
+          - pip install .
+          - cd ../
+          - git clone git@bitbucket.org:mdd31/solventmapcreator.git
+          - ls
+          - cd solventmapcreator
+          - pip install .
+          - cd ../
+          - git clone git@bitbucket.org:mdd31/puresolventinformation.git
+          - ls
+          - cd puresolventinformation
+          - pip install .
+          - cd ../build
+          - pip install .
+          - pytest phasecalculator/test/*test/*test.py
diff --git a/environment.yml b/environment.yml
new file mode 100644
index 0000000000000000000000000000000000000000..416e69e9fae1d6dff833bfcf8adc8e30b90ccc8e
--- /dev/null
+++ b/environment.yml
@@ -0,0 +1,184 @@
+name: resultsanalysis
+channels:
+  - rdkit
+  - conda-forge
+  - defaults
+dependencies:
+  - _libgcc_mutex=0.1=main
+  - alabaster=0.7.12=py37_0
+  - appdirs=1.4.3=py37h28b3542_0
+  - argh=0.26.2=py37_0
+  - asn1crypto=1.2.0=py37_0
+  - astroid=2.3.3=py37_0
+  - atomicwrites=1.3.0=py37_1
+  - attrs=19.3.0=py_0
+  - autopep8=1.4.4=py_0
+  - babel=2.7.0=py_0
+  - backcall=0.1.0=py37_0
+  - black=19.3b0=py_0
+  - blas=1.0=mkl
+  - bleach=3.1.0=py37_0
+  - bzip2=1.0.8=h7b6447c_0
+  - ca-certificates=2019.11.27=0
+  - cairo=1.14.12=h8948797_3
+  - certifi=2019.11.28=py37_0
+  - cffi=1.13.2=py37h2e261b9_0
+  - chardet=3.0.4=py37_1003
+  - click=7.0=py37_0
+  - cloudpickle=1.2.2=py_0
+  - cryptography=2.8=py37h1ba5d50_0
+  - cycler=0.10.0=py37_0
+  - dbus=1.13.12=h746ee38_0
+  - decorator=4.4.1=py_0
+  - defusedxml=0.6.0=py_0
+  - diff-match-patch=20181111=py_0
+  - docutils=0.15.2=py37_0
+  - entrypoints=0.3=py37_0
+  - expat=2.2.6=he6710b0_0
+  - flake8=3.7.9=py37_0
+  - fontconfig=2.13.0=h9420a91_0
+  - freetype=2.9.1=h8a8886c_1
+  - future=0.18.2=py37_0
+  - glib=2.63.1=h5a9c865_0
+  - gmp=6.1.2=h6c8ec71_1
+  - gst-plugins-base=1.14.0=hbbd80ab_1
+  - gstreamer=1.14.0=hb453b48_1
+  - icu=58.2=h9c2bf20_1
+  - idna=2.8=py37_0
+  - imagesize=1.1.0=py37_0
+  - importlib_metadata=1.3.0=py37_0
+  - intel-openmp=2019.4=243
+  - intervaltree=3.0.2=py_0
+  - ipykernel=5.1.3=py37h39e3cac_0
+  - ipython=7.10.2=py37h39e3cac_0
+  - ipython_genutils=0.2.0=py37_0
+  - isort=4.3.21=py37_0
+  - jedi=0.14.1=py37_0
+  - jeepney=0.4.1=py_0
+  - jinja2=2.10.3=py_0
+  - jpeg=9b=h024ee3a_2
+  - jsonschema=3.2.0=py37_0
+  - jupyter_client=5.3.4=py37_0
+  - jupyter_core=4.6.1=py37_0
+  - keyring=20.0.0=py37_0
+  - kiwisolver=1.1.0=py37he6710b0_0
+  - lazy-object-proxy=1.4.3=py37h7b6447c_0
+  - libboost=1.67.0=h46d08c1_4
+  - libedit=3.1.20181209=hc058e9b_0
+  - libffi=3.2.1=hd88cf55_4
+  - libgcc-ng=9.1.0=hdf63c60_0
+  - libgfortran-ng=7.3.0=hdf63c60_0
+  - libpng=1.6.37=hbc83047_0
+  - libsodium=1.0.16=h1bed415_0
+  - libspatialindex=1.9.3=he6710b0_0
+  - libstdcxx-ng=9.1.0=hdf63c60_0
+  - libtiff=4.1.0=h2733197_0
+  - libuuid=1.0.3=h1bed415_2
+  - libxcb=1.13=h1bed415_1
+  - libxml2=2.9.9=hea5a465_1
+  - libxslt=1.1.33=h7d1a2b0_0
+  - lxml=4.4.2=py37hefd8a0e_0
+  - markupsafe=1.1.1=py37h7b6447c_0
+  - matplotlib=3.1.1=py37h5429711_0
+  - mccabe=0.6.1=py37_1
+  - mistune=0.8.4=py37h7b6447c_0
+  - mkl=2019.4=243
+  - mkl-service=2.3.0=py37he904b0f_0
+  - mkl_fft=1.0.15=py37ha843d7b_0
+  - mkl_random=1.1.0=py37hd6b4f25_0
+  - more-itertools=8.0.2=py_0
+  - nbconvert=5.6.1=py37_0
+  - nbformat=4.4.0=py37_0
+  - ncurses=6.1=he6710b0_1
+  - numpy=1.17.4=py37hc1035e2_0
+  - numpy-base=1.17.4=py37hde5b4d6_0
+  - numpydoc=0.9.1=py_0
+  - olefile=0.46=py_0
+  - openssl=1.1.1d=h7b6447c_3
+  - packaging=19.2=py_0
+  - pandas=0.25.3=py37he6710b0_0
+  - pandoc=2.2.3.2=0
+  - pandocfilters=1.4.2=py37_1
+  - parso=0.5.2=py_0
+  - pathtools=0.1.2=py_1
+  - pcre=8.43=he6710b0_0
+  - pexpect=4.7.0=py37_0
+  - pickleshare=0.7.5=py37_0
+  - pillow=6.2.1=py37h34e0f95_0
+  - pip=19.3.1=py37_0
+  - pixman=0.38.0=h7b6447c_0
+  - pluggy=0.13.1=py37_0
+  - prompt_toolkit=3.0.2=py_0
+  - psutil=5.6.7=py37h7b6447c_0
+  - ptyprocess=0.6.0=py37_0
+  - py=1.8.0=py37_0
+  - py-boost=1.67.0=py37h04863e7_4
+  - pycodestyle=2.5.0=py37_0
+  - pycparser=2.19=py37_0
+  - pydocstyle=4.0.1=py_0
+  - pyflakes=2.1.1=py37_0
+  - pygments=2.5.2=py_0
+  - pylint=2.4.4=py37_0
+  - pympler=0.7=py_0
+  - pyopenssl=19.1.0=py37_0
+  - pyparsing=2.4.5=py_0
+  - pyqt=5.9.2=py37h05f1152_2
+  - pyrsistent=0.15.6=py37h7b6447c_0
+  - pysocks=1.7.1=py37_0
+  - pytest=5.3.2=py37_0
+  - python=3.7.5=h0371630_0
+  - python-dateutil=2.8.1=py_0
+  - python-jsonrpc-server=0.3.2=py_0
+  - python-language-server=0.31.2=py37_0
+  - pytz=2019.3=py_0
+  - pyxdg=0.26=py_0
+  - pyyaml=5.2=py37h7b6447c_0
+  - pyzmq=18.1.0=py37he6710b0_0
+  - qdarkstyle=2.7=py_0
+  - qt=5.9.7=h5867ecd_1
+  - qtawesome=0.6.0=py_0
+  - qtconsole=4.6.0=py_0
+  - qtpy=1.9.0=py_0
+  - rdkit=2019.09.2.0=py37hc20afe1_1
+  - readline=7.0=h7b6447c_5
+  - requests=2.22.0=py37_1
+  - rope=0.14.0=py_0
+  - rtree=0.8.3=py37_0
+  - scipy=1.3.2=py37h7c811a0_0
+  - secretstorage=3.1.1=py37_0
+  - setuptools=42.0.2=py37_0
+  - sip=4.19.8=py37hf484d3e_0
+  - six=1.13.0=py37_0
+  - snowballstemmer=2.0.0=py_0
+  - sortedcontainers=2.1.0=py37_0
+  - sphinx=2.3.0=py_0
+  - sphinxcontrib-applehelp=1.0.1=py_0
+  - sphinxcontrib-devhelp=1.0.1=py_0
+  - sphinxcontrib-htmlhelp=1.0.2=py_0
+  - sphinxcontrib-jsmath=1.0.1=py_0
+  - sphinxcontrib-qthelp=1.0.2=py_0
+  - sphinxcontrib-serializinghtml=1.1.3=py_0
+  - spyder=3.3.6=py37_0
+  - spyder-kernels=0.5.2=py37_0
+  - sqlite=3.30.1=h7b6447c_0
+  - svgutils=0.3.1=py_1000
+  - testpath=0.4.4=py_0
+  - tk=8.6.8=hbc83047_0
+  - toml=0.10.0=py37h28b3542_0
+  - tornado=6.0.3=py37h7b6447c_0
+  - traitlets=4.3.3=py37_0
+  - ujson=1.35=py37h14c3975_0
+  - urllib3=1.25.7=py37_0
+  - watchdog=0.9.0=py37_1
+  - wcwidth=0.1.7=py37_0
+  - webencodings=0.5.1=py37_1
+  - wheel=0.33.6=py37_0
+  - wrapt=1.11.2=py37h7b6447c_0
+  - wurlitzer=2.0.0=py37_0
+  - xz=5.2.4=h14c3975_4
+  - yaml=0.1.7=had09818_2
+  - yapf=0.28.0=py_0
+  - zeromq=4.3.1=he6710b0_3
+  - zipp=0.6.0=py_0
+  - zlib=1.2.11=h7b6447c_3
+  - zstd=1.3.7=h0b5b093_0