diff --git a/Dockerfile.old b/Dockerfile.old
deleted file mode 100644
index b00f3d65e8dddefb9ded18e07ec4b8c9eebd3dcc..0000000000000000000000000000000000000000
--- a/Dockerfile.old
+++ /dev/null
@@ -1,37 +0,0 @@
-FROM python:3.10-bullseye as backend
-
-ENV JASS_DATA_DIR '/data'
-ENV JASS_PROJECTS_DIR '/projects'
-
-EXPOSE 8080
-
-CMD ["uvicorn", "jass.server:app", "--host", "0.0.0.0", "--port", "8080"]
-
-RUN addgroup --gid 1000 kiwi \
- && adduser --disabled-password --gecos '' --uid 1000 --gid 1000 kiwi \
- && apt-get update \
- && apt-get install -y \
-        nano \
-        wget \
-        rsync \
- && rm -rf /var/lib/apt/lists/* \
- && pip install --upgrade pip setuptools \
- && mkdir /code \
- && mkdir ${JASS_DATA_DIR} \
- && chown kiwi:kiwi ${JASS_DATA_DIR} \
- && mkdir ${JASS_PROJECTS_DIR} \
- && chown kiwi:kiwi ${JASS_PROJECTS_DIR}
-WORKDIR /code
-
-COPY requirements*.txt /code/
-RUN pip install -r requirements.txt \
- && pip3 install -U watchdog[watchmedo]
-
-COPY ./*-entrypoint.sh /
-RUN chmod a+x /*-entrypoint.sh
-ENTRYPOINT ["/docker-entrypoint.sh"]
-
-COPY . /code/
-RUN pip install -e .
-
-USER kiwi
diff --git a/docker-compose.test.yaml.old b/docker-compose.test.yaml.old
deleted file mode 100644
index 8c30f7691ce6711638fcb243144b7bca8b13d7ca..0000000000000000000000000000000000000000
--- a/docker-compose.test.yaml.old
+++ /dev/null
@@ -1,8 +0,0 @@
-version: '3.4'
-services:
-  celery:
-    volumes:
-      - ./jass/test/data_real:/data
-  back:
-    volumes:
-      - ./jass/test/data_real:/data
\ No newline at end of file
diff --git a/docker-compose.yaml.old b/docker-compose.yaml.old
deleted file mode 100644
index 69f2b02235cd7d6dcda38b205af546fa3d3ddccd..0000000000000000000000000000000000000000
--- a/docker-compose.yaml.old
+++ /dev/null
@@ -1,67 +0,0 @@
-version: '3.4'
-services:
-  rabbitmq:
-    image: rabbitmq:3-alpine
-    healthcheck:
-      test: ['CMD', 'rabbitmqctl', 'status']
-      interval: 30s
-      timeout: 15s
-      retries: 3
-    volumes:
-      - ./chart/rabbitmq.conf:/etc/rabbitmq/conf.d/20-jass.conf
-    ports:
-      - '5672:5672'
-  celery:
-    build:
-      context: .
-    image: jass
-    # dirty command below waits a little bit for rabbitmq to be
-    # up and running before starting celery
-    command: ['/bin/sh', '-c', 'sleep 10 && watchmedo auto-restart --directory=/code --pattern=*.py --recursive -- celery -A jass worker --concurrency=1 --max-tasks-per-child=1']
-    environment:
-      #LC_ALL: en_US.utf-8
-      RABBITMQ_HOST: 'rabbitmq'
-      WAIT_FOR_DATA_DIR_READY: 1
-    volumes:
-      - ./projects:/projects
-      - ./data:/data
-      - ./jass:/code/jass
-    depends_on:
-      - rabbitmq
-    restart: on-failure
-  back:
-    build:
-      context: .
-    command: ['watchmedo', 'auto-restart', '--directory=/code', '--pattern=*.py', '--recursive', '--', 'uvicorn', 'jass.server:app',  '--host', '0.0.0.0', '--reload', '--port', '8080']
-    environment:
-      RABBITMQ_HOST: 'rabbitmq'
-    volumes:
-      - ./projects:/projects
-      - ./data:/data
-      - ./jass:/code/jass
-    ports:
-      - '8080:8080'
-    depends_on:
-      - rabbitmq
-      - celery
-  front:
-    build:
-      context: client
-      target: client-base-container
-    command: /bin/sh -c "yarn install && yarn dev"
-    environment:
-      HOST: 0.0.0.0
-      NODE_ENV: development
-#      API_URL: http://172.19.0.1:8000/api
-    volumes:
-      - ./client:/client
-    ports:
-      - '3000:3000'
-  front-static:
-    build:
-      context: client
-      target: client-static-serve
-#      args:
-#        API_URL: http://0.0.0.0:8000/api
-    ports:
-      - '3001:8080'
diff --git a/docker-entrypoint.sh.old b/docker-entrypoint.sh.old
deleted file mode 100644
index a0aa4ac3c8fca432539f876b88042c73ff2e626c..0000000000000000000000000000000000000000
--- a/docker-entrypoint.sh.old
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-
-function msg_info {
-   echo -e "\033[1;32m$1\033[0m"
-}
-
-function msg_warning {
-   echo -e "\033[1;33m$1\033[0m"
-}
-
-function msg_error {
-   echo -e "\033[1;31m$1\033[0m"
-}
-
-cd /code
-
-if [ "$1" == "hold_on" ]; then
-    msg_info "holding on util you delete /tmp/hold_on"
-    touch /tmp/hold_on
-    while [ -e "/tmp/hold_on" ]; do
-        sleep 1 ;
-        echo "holding on" ;
-    done
-fi
-
-#if [ "${WAIT_FOR_DATA_DIR_READY}" == "1" ]; then
-#    while [ ! -f ${DATA_DIR_READY} ]; do
-#        msg_info "Waiting for data dir ot flagged ready with ${DATA_DIR_READY}"
-#        sleep 5
-#    done
-#else
-#    msg_info "Copying file from /code/data to ${JASS_DATA_DIR}"
-#    rsync -a /code/data/ ${JASS_DATA_DIR}/
-#    export INIT_TABLE_PATH="${JASS_DATA_DIR}/initTable.hdf5"
-#    if [ ! -f ${INIT_TABLE_PATH} ]; then
-#        msg_info "$INIT_TABLE_PATH missing, downloading it from $INIT_TABLE_URL"
-#        wget "${INIT_TABLE_URL}" --output-document=${INIT_TABLE_PATH}
-#    else
-#        msg_info "$INIT_TABLE_PATH found"
-#    fi
-#    touch ${DATA_DIR_READY}
-#fi
-
-
-exec "$@"
diff --git a/jass/celeryconfig.py.old b/jass/celeryconfig.py.old
deleted file mode 100644
index 4922de85e5d60e4d83e05209da88e9c6355402c1..0000000000000000000000000000000000000000
--- a/jass/celeryconfig.py.old
+++ /dev/null
@@ -1,26 +0,0 @@
-import os
-
-## Broker settings.
-# broker_url = os.getenv("JASS_RABBITMQ_URL", "amqp://guest:guest@localhost:5672//")
-from jass.config import config
-
-broker_url = "amqp://%(user)s:%(pwd)s@%(host)s:%(port)s//" % dict(
-    user=os.getenv('RABBITMQ_USER', 'guest'),
-    pwd=os.getenv('RABBITMQ_PASSWORD', 'guest'),
-    host=os.getenv('RABBITMQ_HOST', 'localhost'),
-    port=os.getenv('RABBITMQ_PORT', '5672'),
-)
-
-## Broker settings.
-# result_backend = os.getenv('JASS_RABBITMQ_URL','amqp://guest2:guest@localhost:5672//')
-# result_backend = "rpc://"
-result_backend = f'file://{config["CELERY_RESULTS_BACKEND_DIR"]}'  # if rpc become not a solution
-# List of modules to import when the Celery worker starts.
-# imports = ('myapp.tasks',)
-
-## Using the database to store task state and results.
-# result_backend = 'db+sqlite:///results.db'
-
-# task_annotations = {'tasks.add': {'rate_limit': '10/s'}}
-# task_track_started = True
-task_acks_late = True  # needed as worker can be killed by k8s when consuming to much RAM
diff --git a/jass/server.py.old b/jass/server.py.old
deleted file mode 100644
index d5ed5f36ea9fb89d6eb34ba97ae351ca4b92aa19..0000000000000000000000000000000000000000
--- a/jass/server.py.old
+++ /dev/null
@@ -1,358 +0,0 @@
-#!/usr/bin/env python3
-import logging
-import os
-import shutil
-import traceback
-from json import JSONDecodeError
-from pathlib import Path
-from typing import List
-
-from starlette.responses import RedirectResponse, JSONResponse
-from tables import HDF5ExtError
-
-from jass import util
-from jass.config import config
-from jass.models.phenotype import Phenotype, get_available_phenotypes, PhenotypeIdList, InitTableNameModel
-from jass.models.inittable import get_inittable_meta, valideInitTableNamePattern
-from jass.models.project import GlobalProject, load_project as project__load_project
-from jass.tasks import create_project, run_project_analysis_if_needed, get_queue_status
-
-from fastapi import FastAPI, HTTPException
-from fastapi.responses import Response, FileResponse
-from fastapi.middleware.cors import CORSMiddleware
-
-app = FastAPI()
-
-app.add_middleware(
-    CORSMiddleware,
-    allow_origins=["*"],
-    allow_methods=["*"],
-    allow_headers=["*"],
-)
-
-if os.path.exists('client/dist'):
-    app.mount("/webui", util.SinglePageApplication(directory=Path('client/dist')), name="SPA")
-else:
-    logging.info("/webui cannot be served as client/dist is missing, please build the client.")
-
-
-def load_project(project_id, *args, **kargs):
-    try:
-        return project__load_project(project_id=project_id, *args, **kargs)
-    except FileNotFoundError:
-        raise HTTPException(status_code=404, detail="Project not found")
-    except JSONDecodeError as e:
-        print(f"Project {project_id} has a corrupted meta.json ({str(e)}), removing it.")
-        shutil.rmtree(GlobalProject.get_folder_path_from_id(project_id))
-        raise HTTPException(status_code=404, detail="Project invalid, and removed")
-
-
-@app.get("/")
-async def read_index():
-    return RedirectResponse(url="/webui/")
-
-
-@app.get("/api/tables", response_model=List[str])
-def inittable_list():
-    """List initTables"""
-    for filename in os.listdir(config["DATA_DIR"]):
-        if (
-            filename.endswith(".hdf5")
-            and "worktable" not in filename.lower()
-            and valideInitTableNamePattern.match(filename)
-        ):
-            yield filename
-
-
-@app.post("/api/phenotypes", response_model=List[Phenotype])
-def phenotypes_list(init_table_name: InitTableNameModel):
-    """List phenotypes"""
-    try:
-        return get_available_phenotypes(init_table_name.get_init_table_path())
-    except FileNotFoundError as e:  # initTable does not exists
-        raise HTTPException(status_code=404, detail=str(e))
-
-@app.post("/api/initmeta")
-def inittable_meta(init_table_name: InitTableNameModel):
-    """Number of phenotype and SNPs"""
-    return get_inittable_meta(init_table_name.get_init_table_path())
-
-
-@app.post("/api/projects", response_model=GlobalProject)
-def project_create(phenotype_id_list: PhenotypeIdList):
-    return create_project(
-        phenotype_id_list.phenotypeID,
-        init_table_name=phenotype_id_list.initTableName,
-    )
-
-
-@app.get("/api/projects/{project_id}", response_model=GlobalProject)
-def project_detail(project_id: str):
-    project = load_project(project_id=project_id)
-    run_project_analysis_if_needed(project)
-    return project
-
-
-@app.get("/api/projects/{project_id}/progress", response_model = int )
-def project_detail(project_id: str):
-    return load_project(project_id=project_id).progress
-
-
-@app.get("/api/projects/{project_id}/unload", response_model=bool)
-def project_detail(project_id: str):
-    return load_project(project_id=project_id, flag_as_visited=False).delete_large_files()
-
-
-@app.get("/api/projects/{project_id}/summary")
-def project_detail(project_id: str):
-    return load_project(project_id=project_id).get_project_summary_statistics()
-
-
-@app.get("/api/projects/{project_id}/gencov")
-def project_gencov_view(project_id: str):
-    try:
-        return util.JSONNumpyResponse(load_project(project_id=project_id).get_project_gencov())
-    except ValueError as e:  # NaN in values
-        raise HTTPException(status_code=500, detail=str(e))
-    except HDF5ExtError as e:  # file corrupted
-        raise HTTPException(status_code=500, detail=str(e))
-    except Exception as e:  # anything else
-        traceback.print_exc()
-        raise HTTPException(status_code=500, detail=str(e))
-
-
-@app.get("/api/projects/{project_id}/metadata")
-def project_metadata(project_id: str):
-    return FileResponse(load_project(project_id=project_id).get_metadata_file_path())
-
-
-@app.get("/api/projects/{project_id}/globalmanhattan")
-def project_get_manhattan(project_id: str):
-    return FileResponse(
-        load_project(project_id=project_id).get_global_manhattan_plot_path(),
-        media_type="image/png",
-    )
-
-
-@app.get("/api/projects/{project_id}/quadrant")
-def project_get_quadrant(project_id: str):
-    return FileResponse(
-        load_project(project_id=project_id).get_quadrant_plot_path(),
-        media_type="image/png",
-    )
-
-
-@app.get("/api/projects/{project_id}/qqplot")
-def project_get_qq_plot(project_id: str):
-    return FileResponse(
-        load_project(project_id=project_id).get_qq_plot_path(),
-        media_type="image/png",
-    )
-
-
-@app.get("/api/projects/{project_id}/genome_full")
-def get_full_sumstat(project_id: str):
-    project = load_project(project_id=project_id)
-    if not os.path.exists(project.get_csv_path()):
-        print("CREATING CSV FILE")
-        project.create_csv_file()
-        print("CREATED CSV FILE")
-    return FileResponse(
-        project.get_csv_path(),
-        filename=f"genome_full_{project_id}.csv",
-        media_type="text/csv",
-    )
-
-
-@app.get("/api/projects/{project_id}/genome")
-def get_data_manhattan(project_id: str):
-    return Response(
-        content=load_project(project_id=project_id).get_project_genomedata(),
-        media_type="text/csv",
-        headers={"content-disposition": f"attachment; filename=genome_{project_id}.csv"},
-    )
-
-
-@app.get("/api/projects/{project_id}/heatmap/{selected_chr}/{selected_region}")
-def get_heatmap(project_id: str, selected_chr: str, selected_region: str):
-    print("CHR")
-    print(selected_chr)
-    print("Region")
-    print(selected_region)
-    return Response(
-        load_project(project_id=project_id).get_project_local_heatmap_data(
-            chromosome=selected_chr,
-            region=selected_region,
-        ),
-        media_type="text/csv; charset=utf-8",
-    )
-
-
-@app.get("/api/projects/{project_id}/manhattan/{selected_chr}/{selected_region}")
-def get_manhattan(project_id: str, selected_chr: str, selected_region: str):
-    return Response(
-        load_project(project_id=project_id).get_project_local_manhattan_data(
-            chromosome=selected_chr,
-            region=selected_region,
-        ),
-        media_type="text/csv; charset=utf-8",
-    )
-
-
-@app.get("/api/queue_status")
-def queue_status():
-    return JSONResponse(get_queue_status())
-
-
-
-
-# @blp_inittable.route("")
-# class InitMetaMethodView(MethodView):
-#     @blp_inittable.response(200, InittableMetaSchema())
-#     def get(self):
-#         """Number of phenotype and SNPs"""
-#         return get_inittable_meta(os.path.join(config["DATA_DIR"], "initTable.hdf5"))
-
-# @blp_projects.route("")
-# class ProjectCreateMethodView(MethodView):
-#     @blp_projects.arguments(ProjectParamsSchema(), location="form")
-#     @blp_projects.response(200, ProjectSchema())
-#     def post(self, parameters):
-#         """List projects"""
-#         phenotype_ids = [
-#             phenotype_id
-#             for ids_with_commas in parameters["phenotypeID"]
-#             for phenotype_id in ids_with_commas.split(",")
-#         ]
-#         phenotypes = list(filter(lambda d: d.id in phenotype_ids, get_phenotypes()))
-#         return create_project([p.id for p in phenotypes], get_phenotypes())
-
-
-# @blp_local_projects.route("")
-# class LocalProjectCreateMethodView(MethodView):
-#     @blp_projects.arguments(LocalProjectParamsSchema(), location="form")
-#     @blp_projects.response(200, ProjectSchema())
-#     def post(self, parameters):
-#         """List projects"""
-#         phenotype_ids = [
-#             phenotype_id
-#             for ids_with_commas in parameters["phenotypeID"]
-#             for phenotype_id in ids_with_commas.split(",")
-#         ]
-#         phenotypes = list(filter(lambda d: d.id in phenotype_ids, get_phenotypes()))
-#         return create_project(
-#             [p.id for p in phenotypes],
-#             get_phenotypes(),
-#             str(parameters["chromosome"]),
-#             str(parameters["start"]),
-#             str(parameters["end"]),
-#         )
-
-
-# @blp_projects.route("/<project_id>")
-# class ProjectDetailMethodView(MethodView):
-#     @blp_projects.response(200, ProjectSchema())
-#     def get(self, project_id):
-#         return load_project(project_id=project_id)
-
-
-# @blp_projects.route("/<project_id>/csv_status")
-# class ProjectCSVStatusMethodView(MethodView):
-#     def get(self, project_id):
-#         return load_project(project_id=project_id).get_csv_file_generation()
-
-
-
-
-
-
-
-
-
-
-
-
-# @blp_projects.route("/<project_id>/zoom_manhattan")
-# class ProjectZoomManhattanMethodView(MethodView):
-#     def get(self, project_id):
-#         try:
-#             return (
-#                 load_project(project_id=project_id).get_project_local_manhattan_data(),
-#                 200,
-#                 {"Content-Type": "text/plain; charset=utf-8"},
-#             )
-#         except FileNotFoundError:
-#             status = Project(id=project_id).status
-#             # if status == Project.DOES_NOT_EXIST:
-#             #     return (
-#             #         f"project {project_id} does not exist",
-#             #         404,
-#             #         {"Content-Type": "text/plain; charset=utf-8"},
-#             #     )
-#             # elif status["worktable"] == Project.CREATING:
-#             #     return (
-#             #         "data not ready yet",
-#             #         202,
-#             #         {"Content-Type": "text/plain; charset=utf-8"},
-#             #     )
-#             # else:
-#             #     abort(500)
-
-
-
-# @blp_projects.route("/<project_id>/zoomplot")
-# class ProjectZoomPlotMethodView(MethodView):
-#     def get(self, project_id):
-#         try:
-#             return send_file(
-#                 load_project(project_id=project_id).get_zoom_plot_path(), mimetype="image/png"
-#             )
-#         except FileNotFoundError:
-#             status = load_project(project_id=project_id).status
-#             # if status == Project.DOES_NOT_EXIST:
-#             #     return (
-#             #         f"project {project_id} does not exist",
-#             #         404,
-#             #         {"Content-Type": "text/plain; charset=utf-8"},
-#             #     )
-#             # elif status["worktable"] == Project.CREATING:
-#             #     return (
-#             #         "data not ready yet",
-#             #         202,
-#             #         {"Content-Type": "text/plain; charset=utf-8"},
-#             #     )
-#             # else:
-#             #     abort(500)
-
-
-
-
-
-# class JassApp(Flask):
-#     """
-#     JassApp builds the JASS Flask application
-#     """
-
-#     def __init__(self):
-#         self.flask_app = Flask(__name__, static_url_path="", static_folder="static")
-#         self.flask_app.config["API_TITLE"] = "JASS API"
-#         self.flask_app.config["API_VERSION"] = "v2.0"
-#         self.flask_app.config["OPENAPI_VERSION"] = "3.0.2"
-#         self.flask_app.route("/")(self.redirect_to_index)
-#         self.api = Api(self.flask_app)
-
-#     def create_app(self):
-#         return self.flask_app
-
-#     def redirect_to_index(self):
-#         return redirect("index.html")
-
-#     def register_api_blueprint(self, blp):
-#         self.api.register_blueprint(blp, url_prefix=f"/api/{blp.url_prefix}")
-
-
-# jass_app = JassApp()
-# jass_app.register_api_blueprint(blp_phenotypes)
-# jass_app.register_api_blueprint(blp_projects)
-# jass_app.register_api_blueprint(blp_local_projects)
-# jass_app.register_api_blueprint(blp_inittable)
diff --git a/jass/tasks.py.old b/jass/tasks.py.old
deleted file mode 100644
index 82e9b9d9c014f7468726cfb268e376099ff9b3cb..0000000000000000000000000000000000000000
--- a/jass/tasks.py.old
+++ /dev/null
@@ -1,191 +0,0 @@
-import os
-import sys
-import traceback
-from typing import List, Dict
-
-from celery import Celery, group, chain
-from fastapi import HTTPException
-from flask import Flask
-
-import jass.models.project
-from jass.models.project import GlobalProject, Project, ensure_space_in_project_dir
-
-from jass.models.phenotype import Phenotype, get_available_phenotypes
-from jass.config import config
-
-
-def make_celery(app):
-    celery = Celery()
-    if "CELERY_CONFIG_MODULE" in os.environ:
-        celery.config_from_envvar("CELERY_CONFIG_MODULE")
-    else:
-        celery.config_from_object("jass.celeryconfig")
-    celery.conf.update(app.config)
-    TaskBase = celery.Task
-
-    class ContextTask(TaskBase):
-        abstract = True
-
-        def __call__(self, *args, **kwargs):
-            with app.app_context():
-                return TaskBase.__call__(self, *args, **kwargs)
-
-    celery.Task = ContextTask
-    return celery
-
-
-flask_app = Flask(__name__)
-celery = make_celery(flask_app)
-
-
-@celery.task
-def ensure_space_in_project_dir_task(project_id):
-    ensure_space_in_project_dir(except_project_id=project_id)
-
-
-@celery.task
-def create_project_worktable(project_id):
-    project = GlobalProject.load(project_id)
-    return project.create_worktable_file()
-
-
-@celery.task
-def create_project_global_plot(project_id):
-    project = GlobalProject.load(project_id)
-    return project.create_global_manhattan_plot()
-
-
-@celery.task
-def create_project_quadrant_plot(project_id):
-    project = GlobalProject.load(project_id)
-    return project.create_quadrant_plot()
-
-
-@celery.task
-def create_project_local_plot(project_id):
-    project = GlobalProject.load(project_id)
-    return project.create_local_plot()
-
-
-@celery.task
-def create_project_qq_plot(project_id):
-    project = GlobalProject.load(project_id)
-    return project.create_qq_plot()
-
-
-@celery.task
-def create_project_csv_file(project_id):
-    project = GlobalProject.load(project_id)
-    return project.create_csv_file()
-
-
-@celery.task
-def create_project_metadata_file(project_id):
-    project = GlobalProject.load(project_id)
-    return project.create_project_metadata_file()
-
-
-@celery.task
-def dummy_task():
-    print("This task to nothing, but help the chain to have a valid status")
-
-
-def get_queue_status():
-    inspect = celery.control.inspect()
-    workers = set()
-    ret = {'active': 0, 'reserved': 0}
-    for k in ['active', 'reserved']:
-        try:
-            for worker, queue in getattr(inspect, k)().items():
-                ret[k] += len(queue)
-                workers.add(worker)
-        except (
-                AttributeError,  # when no worker
-                ConnectionResetError,  # when rabbitMQ went down
-                TimeoutError,  # when rabbitMQ is not reachable
-        ):
-            pass
-    ret['worker'] = len(workers)
-    return ret
-
-
-def run_project_analysis_if_needed(project):
-    if project.has_computation_going_on():
-        return
-    tasks = []
-    post_worktable_tasks = []
-
-    if not os.path.exists(project.get_worktable_path()):
-        tasks.append(create_project_worktable.si(project.id))
-
-    if project.get_metadata_file_path() and not os.path.exists(project.get_metadata_file_path()):
-        tasks.append(create_project_metadata_file.si(project.id))
-
-    if project.get_global_manhattan_plot_path() and not os.path.exists(project.get_global_manhattan_plot_path()):
-        post_worktable_tasks.append(create_project_global_plot.si(project.id))
-
-    if project.get_quadrant_plot_path() and not os.path.exists(project.get_quadrant_plot_path()):
-        post_worktable_tasks.append(create_project_quadrant_plot.si(project.id))
-
-    if project.get_qq_plot_path() and not os.path.exists(project.get_qq_plot_path()):
-        post_worktable_tasks.append(create_project_qq_plot.si(project.id))
-
-    if project.get_csv_path() and not os.path.exists(project.get_csv_path()):
-        post_worktable_tasks.append(create_project_csv_file.si(project.id))
-
-    if len(tasks) + len(post_worktable_tasks) == 0:
-        return
-    main_wf = chain(
-        # first we check again that there is enough disk space
-        ensure_space_in_project_dir_task.si(project.id),
-        # we run the main task(s)
-        *tasks,
-        # we then compute the missing charts
-        group(post_worktable_tasks),
-        # it is mandatory to add a task that do nothing if group is used in order to have a success/failure status
-        dummy_task.si(),
-    )
-    task = main_wf.delay()
-    project.celery_id = task.id
-    # Artificially create a result for the chain/chord so its state will survive reboot of rabbitmq.
-    # Otherwise, the status would be PENDING which we consider, even if no task are pending.
-    task.backend.store_result(task.id, None, "SENT")
-    project.save()
-
-
-def create_project(
-    phenotype_ids: List[str],
-    chromosome: str = None,
-    start: str = None,
-    end: str = None,
-    init_table_name: str = None,
-):
-    init_table_path = os.path.join(config["DATA_DIR"], init_table_name)
-    available_phenotypes=get_available_phenotypes(init_table_path)
-    unavailable_requested_ids = set(phenotype_ids).difference(
-        set(phenotype.id for phenotype in available_phenotypes)
-    )
-    if len(unavailable_requested_ids) > 0:
-        raise HTTPException(status_code=404, detail=f"Phenotype IDs not found: {','.join(unavailable_requested_ids)}")
-    phenotypes = [
-        phenotype for phenotype in available_phenotypes if phenotype.id in phenotype_ids
-    ]
-    project = GlobalProject(phenotypes=phenotypes, init_table_path=init_table_path)
-
-    project.create(fail_if_exists=False)
-    ensure_space_in_project_dir(except_project_id=project.id)
-
-    # if project.get_type_of_analysis() == Project.LOCAL_ANALYSIS:
-    #     # Local Analysis
-    #     global_plot_path = None
-    #     quadrant_plot_path = None
-    #     zoom_plot_path = project.get_zoom_plot_path()
-    #     delayed_gen_csv_file = False
-    # else:
-    #     # genome wide Analysis
-    #     global_plot_path = project.get_global_manhattan_plot_path()
-    #     quadrant_plot_path = project.get_quadrant_plot_path()
-    #     zoom_plot_path = None
-    #     delayed_gen_csv_file = True
-
-    return project
diff --git a/jass/test/test_server.py.old b/jass/test/test_server.py.old
deleted file mode 100644
index 6234855e187645ceb519bf53df82f1f5b5dcbcc6..0000000000000000000000000000000000000000
--- a/jass/test/test_server.py.old
+++ /dev/null
@@ -1,91 +0,0 @@
-# coding: utf-8
-
-from __future__ import absolute_import
-import os, shutil, tempfile
-
-from six import BytesIO
-from flask import json, url_for
-
-from jass.config import config
-from . import JassWebClientTestCase
-
-
-class TestDefaultController(JassWebClientTestCase):
-    """DefaultController integration test stubs"""
-
-    test_folder = "data_real"
-
-    def test_phenotypes_post(self):
-        """
-        Test case retrieving available phenotypes
-        """
-        response = self.testing_client.post("/api/phenotypes", json={})
-        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
-
-        response = self.testing_client.post(
-            "/api/phenotypes",
-            json={"initTableName": "initTable.hdf5"},
-        )
-        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
-        json_response_main = json.loads(response.content.decode("utf-8"))
-        phenotypes_main = set(p["id"] for p in json_response_main)
-
-        response = self.testing_client.post(
-            "/api/phenotypes",
-            json={"initTableName": "initTableTest1.hdf5"},
-        )
-        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
-        json_response_t1 = json.loads(response.content.decode("utf-8"))
-        phenotypes_t1 = set(p["id"] for p in json_response_t1)
-
-        self.assertNotEqual(json_response_t1, json_response_main)
-        self.assertNotEqual(phenotypes_main, phenotypes_t1)
-        self.assertEqual(phenotypes_main.intersection(phenotypes_t1), set())
-
-        response = self.testing_client.post(
-            "/api/phenotypes",
-            json={"initTableName": "initTableMissing.hdf5"},
-        )
-        self.assertEqual(response.status_code, 404, response.content.decode("utf-8"))
-
-    def test_create_project(self):
-        """
-        Test case for creating a project
-        """
-        response = self.testing_client.post(
-            "/api/projects",
-            json={"phenotypeID": ["z_MAGIC_FAST-GLUCOSE"]},
-        )
-        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
-
-    def test_initmeta(self):
-        response = self.testing_client.post("/api/initmeta", json={})
-        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
-        respMain = json.loads(response.content.decode("utf-8"))
-
-        response = self.testing_client.post("/api/initmeta", json={"initTableName": "initTableTest1.hdf5"})
-        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
-        respT1 = json.loads(response.content.decode("utf-8"))
-
-        self.assertNotEqual(respT1, respMain)
-        for key in {
-            'nb_phenotypes',
-            'nb_snps',
-            'name',
-            'desc',
-            'ancestry',
-            'assembly',
-        }:
-            self.assertIn(key , respMain)
-
-    def test_get_tables(self):
-        response = self.testing_client.get("/api/tables")
-        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
-        resp = json.loads(response.content.decode("utf-8"))
-        self.assertSetEqual({"initTable.hdf5", "initTableTest1.hdf5"}, set(resp))
-
-
-if __name__ == "__main__":
-    import unittest
-
-    unittest.main()