diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0d20b6487c61e7d1bde93acf4a14b7a89083a16d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0f3de15516a0423edd85f7e7c32891041f092e02..5b0b56dd66bb86abf466542bb8883bae0dfe00e6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,9 +4,8 @@ pytest:
   stage: test
   before_script:
     - python3 -m pip install -r requirements.txt
-    - python3 -m pip install pytest
   script:
-    - pytest --doctest-modules --junitxml=report.xml
+    - pytest --junitxml=report.xml
   artifacts:
     when: always
     reports:
diff --git a/moist_thermodynamics/__init__.py b/moist_thermodynamics/__init__.py
index 956a73e1c269b0a63a5ad9c9ea1f6d7b72c06d2d..da2f7e850c41589dde2df498689307bfceb5aeb7 100644
--- a/moist_thermodynamics/__init__.py
+++ b/moist_thermodynamics/__init__.py
@@ -1,2 +1,5 @@
 from .functions import *
 from . import constants
+
+
+__version__ = "0.5.0"
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000000000000000000000000000000000000..556c384549329df707d1b0257d9a1614ce9a33c2
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools>=42", "wheel"]   # PEP 508 specifications.
+build-backend = "setuptools.build_meta"
diff --git a/requirements.txt b/requirements.txt
index 6bad10388ecb1eefd890a797d833976a5e631541..f651ca536b5ed03f088378ec25677f1f1ae6b5b9 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
 numpy
+pytest
 scipy
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..551b604a6d2e11d014cb046cf101010de7c690d5
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,19 @@
+[metadata]
+name = moist_thermodynamics
+version = attr: moist_thermodynamics.__version__
+description = Constants and functions for the treatment of moist atmospheric thermodynamics.
+long_description = file: README.md
+license = BSD 3-Clause License
+
+[options]
+packages = find:
+install_requires =
+    numpy
+    scipy
+
+[flake8]
+max-line-length = 88
+extend-ignore = E203
+
+[tool:pytest]
+addopts = --doctest-modules
diff --git a/setup.py b/setup.py
index a8d2f2abc8ff7409a86c6a5587d0f7123771defe..b024da80e9c1c8c800cc1b46e90c1e783cb446cc 100644
--- a/setup.py
+++ b/setup.py
@@ -1,13 +1,4 @@
-# content of setup.py
-from setuptools import setup, find_packages
+from setuptools import setup
 
-setup(
-    name="moist_thermodynamics",
-    version="0.5",
-    description="Constants and functions for the treatment of moist atmospheric thermodynamics",
-    packages=find_packages(),
-    install_requires=[
-        "numpy",
-        "scipy",
-    ],
-)
+
+setup()