diff --git a/build.cmd b/build.cmd
index e4d3d953a08b57d976ee0157ec9867051100c903..6f620ed5c4692c862ff27c82c9b02dc195e70251 100644
--- a/build.cmd
+++ b/build.cmd
@@ -1,7 +1,23 @@
-rem .\venv\Scripts\activate
-pip install -r requirements\dev.in --force-reinstall --use-pep517 --no-cache-dir --compile --progress-bar pretty --log logfile1.txt
-pip install -e . --force-reinstall --use-pep517 --no-cache-dir --compile --progress-bar pretty --log logfile2.txt
+rem deactivate
+rem rm -rf venv
+rem py -3 -m venv venv
+rem venv\Scripts\activate
+
+pip-compile -r requirements\build.in
+pip-compile -r requirements\docs.in
+pip-compile -r requirements\tests.in
+pip-compile -r requirements\dev.in
+
+pip install -r requirements\build.in  --log logfile1.txt
+pip install -r requirements\docs.in  --log logfile2.txt
+pip install -r requirements\tests.in --log logfile3.txt
+pip install -r requirements\dev.in --log logfile4.txt
+
+rem pip install -r requirements\dev.in --force-reinstall --use-pep517 --no-cache-dir --compile --progress-bar pretty --log logfile1.txt
+rem pip install -r requirements\dev.in --use-pep517 --progress-bar pretty --log logfile1.txt
+rem pip install -e . --force-reinstall --use-pep517 --no-cache-dir --compile --progress-bar pretty --log logfile2.txt
 rem pip install -q build --implementation py  --python-version 3.8 --user --force-reinstall --use-pep517 --compile --progress-bar pretty
-rem python -m build
-rem pip install -e . --compile --progress-bar pretty
-pip install dist/covid19python-0.0.19.whl --progress-bar pretty --log logfile3.txt
+
+pip install -e . --compile --force-reinstall --progress-bar pretty --log logfile5.txt
+
+python -m build --wheel
diff --git a/requirements/build.txt b/requirements/build.txt
new file mode 100644
index 0000000000000000000000000000000000000000..397c9b1e72e1a5b4dadbe2e1dc518c9aefb7ec2a
--- /dev/null
+++ b/requirements/build.txt
@@ -0,0 +1,151 @@
+#
+# This file is autogenerated by pip-compile
+# To update, run:
+#
+#    pip-compile 'requirements\build.in'
+#
+appdirs==1.4.4
+    # via virtualenv
+argparse==1.4.0
+    # via pytoolbox
+atomicwrites==1.4.0
+    # via pytest
+attrs==19.3.0
+    # via
+    #   plantuml-creator
+    #   plantuml2freemind
+    #   pytest
+certifi==2020.12.5
+    # via
+    #   pipenv
+    #   requests
+chardet==4.0.0
+    # via requests
+cleo==0.8.1
+    # via plantuml2freemind
+click==7.1.2
+    # via pip-tools
+clikit==0.6.2
+    # via cleo
+colorama==0.4.4
+    # via pytest
+crashtest==0.3.1
+    # via clikit
+distlib==0.3.1
+    # via virtualenv
+filelock==3.0.12
+    # via virtualenv
+httplib2==0.19.0
+    # via plantuml
+idna==2.10
+    # via requests
+importlib-metadata==1.3.0
+    # via plantuml-creator
+markdown==3.3.3
+    # via plantuml-markdown
+more-itertools==8.0.2
+    # via
+    #   plantuml-creator
+    #   pytest
+    #   zipp
+packaging==20.0
+    # via
+    #   -r requirements\build.in
+    #   plantuml-creator
+    #   pytest
+pastel==0.2.1
+    # via clikit
+pip-licenses==3.3.0
+    # via -r requirements\build.in
+pip-tools==5.5.0
+    # via -r requirements\build.in
+pipenv==2020.11.15
+    # via -r requirements\build.in
+plantuml-creator==1.0.7
+    # via -r requirements\build.in
+plantuml-gentools==0.1.2
+    # via -r requirements\build.in
+plantuml-markdown==3.4.2
+    # via -r requirements\build.in
+plantuml-wrapper==0.1.0
+    # via -r requirements\build.in
+plantuml2freemind==0.8.2
+    # via -r requirements\build.in
+plantuml==0.3.0
+    # via plantuml-markdown
+pluggy==0.13.1
+    # via
+    #   plantuml-creator
+    #   pytest
+ptable==0.9.2
+    # via pip-licenses
+py2puml==0.3.1
+    # via -r requirements\build.in
+py==1.8.1
+    # via
+    #   plantuml-creator
+    #   pytest
+pyaml==20.4.0
+    # via pytoolbox
+pylev==1.3.0
+    # via clikit
+pyparsing==2.4.6
+    # via
+    #   httplib2
+    #   packaging
+    #   plantuml-creator
+pytest==5.3.2
+    # via plantuml-creator
+python-magic==0.4.22
+    # via pytoolbox
+pytoml==0.1.21
+    # via -r requirements\build.in
+pytoolbox==14.0.0
+    # via -r requirements\build.in
+pytz==2021.1
+    # via pytoolbox
+pyyaml==5.4.1
+    # via
+    #   plantuml2freemind
+    #   pyaml
+requests==2.25.1
+    # via pytoolbox
+ruamel-yaml==0.16.12
+    # via -r requirements\build.in
+ruamel.yaml.clib==0.2.2
+    # via ruamel-yaml
+six==1.13.0
+    # via
+    #   packaging
+    #   plantuml-creator
+    #   virtualenv
+str2bool==1.1
+    # via plantuml-creator
+stringcase==1.2.0
+    # via plantuml-creator
+typing-extensions==3.7.4.3
+    # via plantuml2freemind
+urllib3==1.26.3
+    # via requests
+venv-run==0.1.0
+    # via -r requirements\build.in
+virtualenv-clone==0.5.4
+    # via pipenv
+virtualenv==20.4.2
+    # via
+    #   -r requirements\build.in
+    #   pipenv
+wcwidth==0.1.8
+    # via
+    #   plantuml-creator
+    #   pytest
+wheel==0.36.2
+    # via -r requirements\build.in
+zipp==0.6.0
+    # via
+    #   importlib-metadata
+    #   plantuml-creator
+
+# The following packages are considered to be unsafe in a requirements file:
+# pip
+# setuptools
diff --git a/requirements/docs.txt b/requirements/docs.txt
index 73ab9577e93bd4cd98f5fbaf27d259932d25aa3e..3f683cb0483bb7c3ff6f15282d7f5bca366e33b1 100644
--- a/requirements/docs.txt
+++ b/requirements/docs.txt
@@ -2,19 +2,18 @@
 # This file is autogenerated by pip-compile
 # To update, run:
 #
-#    pip-compile requirements/docs.in
+#    pip-compile 'requirements\docs.in'
 #
-aiofiles==0.6.0
-    # via npmdownloader
-aiohttp==3.7.3
-    # via npmdownloader
 alabaster==0.7.12
     # via sphinx
-async-timeout==3.0.1
-    # via aiohttp
+appdirs==1.4.4
+    # via virtualenv
+argparse==1.4.0
+    # via pytoolbox
+atomicwrites==1.4.0
+    # via pytest
 attrs==19.3.0
     # via
-    #   aiohttp
     #   plantuml-creator
     #   plantuml2freemind
     #   pytest
@@ -23,11 +22,11 @@ babel==2.9.0
     #   flask-babel
     #   sphinx
 certifi==2020.12.5
-    # via requests
-chardet==3.0.4
     # via
-    #   aiohttp
+    #   pipenv
     #   requests
+chardet==3.0.4
+    # via requests
 cleo==0.8.1
     # via plantuml2freemind
 click==7.1.2
@@ -37,32 +36,42 @@ click==7.1.2
     #   pip-tools
 clikit==0.6.2
     # via cleo
+colorama==0.4.4
+    # via
+    #   pytest
+    #   sphinx
 crashtest==0.3.1
     # via clikit
+distlib==0.3.1
+    # via virtualenv
 docutils==0.16
     # via sphinx
-fasteners==0.16
-    # via npmdownloader
+filelock==3.0.12
+    # via virtualenv
 flask-babel==2.0.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
+flask-filealchemy==0.6.1
+    # via -r requirements\docs.in
 flask-pluginkit==3.6.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 flask-resources==0.6.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 flask-responsebuilder==2.0.13
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
+flask-sqlalchemy==2.4.4
+    # via flask-filealchemy
 flask==1.1.2
     # via
     #   flask-babel
+    #   flask-filealchemy
     #   flask-pluginkit
     #   flask-resources
     #   flask-responsebuilder
+    #   flask-sqlalchemy
 httplib2==0.19.0
     # via plantuml
 idna==2.10
-    # via
-    #   requests
-    #   yarl
+    # via requests
 imagesize==1.2.0
     # via sphinx
 importlib-metadata==1.3.0
@@ -77,7 +86,7 @@ jinja2==2.11.3
 json2html==1.3.0
     # via flask-responsebuilder
 manual-sitemap==19.6.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 markdown==3.3.3
     # via plantuml-markdown
 markupsafe==1.1.1
@@ -89,40 +98,35 @@ more-itertools==8.0.2
     #   plantuml-creator
     #   pytest
     #   zipp
-multidict==5.1.0
-    # via
-    #   aiohttp
-    #   yarl
-node-semver==0.8.0
-    # via npmdownloader
-npmdownloader==1.2.1
-    # via -r requirements/docs.in
 packaging==20.0
     # via
+    #   -r requirements\docs.in
     #   pallets-sphinx-themes
     #   plantuml-creator
     #   pytest
     #   sphinx
 pallets-sphinx-themes==1.2.3
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 pastel==0.2.1
     # via clikit
 pbr==5.5.1
     # via sphinxcontrib-gravizo
 pip-licenses==3.3.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 pip-tools==5.5.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
+pipenv==2020.11.15
+    # via -r requirements\docs.in
 plantuml-creator==1.0.7
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 plantuml-gentools==0.1.2
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 plantuml-markdown==3.4.2
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 plantuml-wrapper==0.1.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 plantuml2freemind==0.8.2
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 plantuml==0.3.0
     # via plantuml-markdown
 pluggy==0.13.1
@@ -132,11 +136,13 @@ pluggy==0.13.1
 ptable==0.9.2
     # via pip-licenses
 py2puml==0.3.1
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 py==1.8.1
     # via
     #   plantuml-creator
     #   pytest
+pyaml==20.4.0
+    # via pytoolbox
 pygments==2.8.0
     # via
     #   sphinx
@@ -150,36 +156,52 @@ pyparsing==2.4.6
     #   plantuml-creator
 pytest==5.3.2
     # via plantuml-creator
+python-frontmatter==0.5.0
+    # via flask-filealchemy
+python-magic==0.4.22
+    # via pytoolbox
+pytoolbox==14.0.0
+    # via -r requirements\docs.in
 pytz==2021.1
     # via
     #   babel
     #   flask-babel
+    #   pytoolbox
 pyyaml==5.4.1
     # via
     #   flask-responsebuilder
     #   plantuml2freemind
+    #   pyaml
+    #   python-frontmatter
 requests==2.25.1
-    # via sphinx
+    # via
+    #   pytoolbox
+    #   sphinx
+ruamel-yaml==0.16.12
+    # via flask-filealchemy
+ruamel.yaml.clib==0.2.2
+    # via ruamel-yaml
 semver==2.13.0
     # via flask-pluginkit
 six==1.13.0
     # via
-    #   fasteners
     #   packaging
     #   plantuml-creator
+    #   python-frontmatter
+    #   virtualenv
 snowballstemmer==2.1.0
     # via sphinx
 speaklater==1.3
     # via
-    #   -r requirements/docs.in
+    #   -r requirements\docs.in
     #   flask-resources
 sphinx-issues==1.2.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 sphinx-tabs==2.0.1
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 sphinx==3.4.3
     # via
-    #   -r requirements/docs.in
+    #   -r requirements\docs.in
     #   pallets-sphinx-themes
     #   sphinx-issues
     #   sphinx-tabs
@@ -190,31 +212,37 @@ sphinxcontrib-applehelp==1.0.2
 sphinxcontrib-devhelp==1.0.2
     # via sphinx
 sphinxcontrib-gravizo==0.0.4
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 sphinxcontrib-htmlhelp==1.0.3
     # via sphinx
 sphinxcontrib-jsmath==1.0.1
     # via sphinx
 sphinxcontrib-log-cabinet==1.0.1
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 sphinxcontrib-plantuml==0.19
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 sphinxcontrib-qthelp==1.0.3
     # via sphinx
 sphinxcontrib-serializinghtml==1.1.4
     # via sphinx
+sqlalchemy==1.3.23
+    # via flask-sqlalchemy
 str2bool==1.1
     # via plantuml-creator
 stringcase==1.2.0
     # via plantuml-creator
 tokenize-rt==4.1.0
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 typing-extensions==3.7.4.3
-    # via
-    #   aiohttp
-    #   plantuml2freemind
+    # via plantuml2freemind
 urllib3==1.26.3
     # via requests
+virtualenv-clone==0.5.4
+    # via pipenv
+virtualenv==20.4.2
+    # via
+    #   -r requirements\docs.in
+    #   pipenv
 wcwidth==0.1.8
     # via
     #   plantuml-creator
@@ -222,11 +250,9 @@ wcwidth==0.1.8
 werkzeug==1.0.1
     # via flask
 wheel==0.36.2
-    # via -r requirements/docs.in
+    # via -r requirements\docs.in
 xmltodict==0.12.0
     # via flask-responsebuilder
-yarl==1.6.3
-    # via aiohttp
 zipp==0.6.0
     # via
     #   importlib-metadata
diff --git a/requirements/tests.txt b/requirements/tests.txt
index 18061120528d487a05b32a62ccccae617cb936b4..d0231ca89d59a080e932019e607611662c9bf4be 100644
--- a/requirements/tests.txt
+++ b/requirements/tests.txt
@@ -2,47 +2,109 @@
 # This file is autogenerated by pip-compile
 # To update, run:
 #
-#    pip-compile requirements/tests.in
+#    pip-compile 'requirements\tests.in'
 #
+appdirs==1.4.4
+    # via virtualenv
+atomicwrites==1.4.0
+    # via pytest
 attrs==20.3.0
     # via pytest
-blinker==1.4
-    # via -r requirements/tests.in
 click==7.1.2
     # via flask
+colorama==0.4.4
+    # via pytest
+distlib==0.3.1
+    # via virtualenv
+filelock==3.0.12
+    # via virtualenv
+flask-fixtures==0.3.8
+    # via -r requirements\tests.in
+flask-sqlalchemy==2.4.4
+    # via
+    #   flask-fixtures
+    #   pytest-flask-sqlalchemy
+flask-unittest==0.1.1
+    # via -r requirements\tests.in
 flask==1.1.2
-    # via pytest-flask
-greenlet==1.0.0
-    # via -r requirements/tests.in
+    # via
+    #   flask-fixtures
+    #   flask-sqlalchemy
+    #   flask-unittest
+    #   pytest-flask
 itsdangerous==1.1.0
     # via flask
+jaraco.context==4.0.0
+    # via pytest-enabler
+jaraco.functools==3.2.1
+    # via pytest-enabler
 jinja2==2.11.3
     # via flask
 markupsafe==1.1.1
     # via jinja2
+mirakuru==2.3.0
+    # via pytest-postgresql
 more-itertools==8.7.0
-    # via pytest
+    # via
+    #   jaraco.functools
+    #   pytest
+    #   pytest-enabler
 packaging==20.9
-    # via pytest
+    # via
+    #   pytest
+    #   pytest-flask-sqlalchemy
 pluggy==0.13.1
     # via pytest
+port-for==0.4
+    # via pytest-postgresql
+psutil==5.8.0
+    # via mirakuru
 py==1.10.0
     # via pytest
 pyparsing==2.4.7
     # via packaging
+pytest-enabler==1.2.0
+    # via -r requirements\tests.in
+pytest-flask-sqlalchemy==1.0.2
+    # via -r requirements\tests.in
 pytest-flask==1.1.0
-    # via -r requirements/tests.in
+    # via -r requirements\tests.in
+pytest-mock==3.5.1
+    # via pytest-flask-sqlalchemy
+pytest-postgresql==2.6.1
+    # via -r requirements\tests.in
+pytest-runner==5.3.0
+    # via -r requirements\tests.in
+pytest-venv==0.2.1
+    # via -r requirements\tests.in
 pytest==5.3.2
     # via
-    #   -r requirements/tests.in
+    #   -r requirements\tests.in
     #   pytest-flask
+    #   pytest-flask-sqlalchemy
+    #   pytest-mock
+    #   pytest-postgresql
+    #   pytest-venv
 python-dotenv==0.15.0
-    # via -r requirements/tests.in
-test-flask==0.2.0
-    # via -r requirements/tests.in
+    # via -r requirements\tests.in
+six==1.15.0
+    # via
+    #   flask-fixtures
+    #   virtualenv
+sqlalchemy==1.3.23
+    # via
+    #   flask-sqlalchemy
+    #   pytest-flask-sqlalchemy
+toml==0.10.2
+    # via pytest-enabler
+virtualenv==20.4.2
+    # via pytest-venv
 wcwidth==0.2.5
     # via pytest
 werkzeug==1.0.1
     # via
     #   flask
     #   pytest-flask
+
+# The following packages are considered to be unsafe in a requirements file:
+# setuptools