diff --git a/ping/views/__init__.py b/ping/views/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..2b38d03c969c294b0845027299537c3b93e7abcf
--- /dev/null
+++ b/ping/views/__init__.py
@@ -0,0 +1,2 @@
+from .experiment import *
+from .network import *
diff --git a/ping/views/experiment.py b/ping/views/experiment.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ba32dce132a779c726a09d3aa83e9ab98c4d721
--- /dev/null
+++ b/ping/views/experiment.py
@@ -0,0 +1,86 @@
+import os
+import shutil
+import zipfile
+
+from django.conf import settings
+
+from django.http import HttpResponse, HttpResponseRedirect
+from django.template import loader
+from django.urls import reverse
+
+from ..models import Experiment, ExperimentForm
+
+
+def entry(request):
+    if request.method == 'POST':
+        form = ExperimentForm(request.POST, request.FILES)
+
+        if form.is_valid():
+            form.save()
+            return HttpResponseRedirect(reverse('ping:experiment'))
+
+    else:
+        form = ExperimentForm()
+        template = loader.get_template('ping/entry.html')
+        context = {"form": form}
+        return HttpResponse(template.render(context, request))
+
+
+def empty_tmp():
+    folder = str(settings.MEDIA_ROOT) + "/tmp"
+    for filename in os.listdir(folder):
+        file_path = os.path.join(folder, filename)
+        try:
+            if os.path.isfile(file_path) or os.path.islink(file_path):
+                os.unlink(file_path)
+            elif os.path.isdir(file_path):
+                shutil.rmtree(file_path)
+        except Exception as e:
+            print('Failed to delete %s. Reason: %s' % (file_path, e))
+
+
+def check(request, experiment_id):
+    # get the path
+    print(experiment_id)
+    exp = Experiment.objects.get(pk=experiment_id)
+    print(str(exp.media))
+    print(str(settings.MEDIA_ROOT) + str(exp.media))
+    # check if it's a zip -> wrong format : not zip
+    print()
+
+    if not zipfile.is_zipfile(str(settings.MEDIA_ROOT) + str(exp.media)):
+        exp.status = "Wrong format : zip file expected"
+        exp.save()
+        return HttpResponseRedirect(reverse('ping:experiment'))
+
+    with zipfile.ZipFile(str(settings.MEDIA_ROOT) + str(exp.media), 'r') as zip_ref:
+        zip_ref.extractall(str(settings.MEDIA_ROOT) + "/tmp")
+
+    folder_path = str(settings.MEDIA_ROOT) + "/tmp/" + exp.name
+
+    if not os.path.isdir(folder_path):
+        exp.status = "Wrong format : zip should contain a folder"
+        exp.save()
+        empty_tmp()
+        return HttpResponseRedirect(reverse('ping:experiment'))
+
+    required_files = ["amas.py", "agent.py", "env.py", "scheduler.py"]
+    for required_file in required_files:
+        if not os.path.exists(folder_path + "/" + required_file):
+            exp.status = "Wrong format : " + required_file + " file is expected"
+            exp.save()
+            empty_tmp()
+            return HttpResponseRedirect(reverse('ping:experiment'))
+
+    exp.status = "Checked"
+    exp.save()
+    empty_tmp()
+    return HttpResponseRedirect(reverse('ping:experiment'))
+
+
+def experiment(request):
+    template = loader.get_template('ping/experiment.html')
+    context = {
+        "experiments": Experiment.objects.all(),
+    }
+    return HttpResponse(template.render(context, request))
diff --git a/ping/views.py b/ping/views/network.py
similarity index 50%
rename from ping/views.py
rename to ping/views/network.py
index 9cd930554ebde50d240e380e6008034f0c3391e4..84e9734db5886687e08b8539042aec4bad3b5f9c 100644
--- a/ping/views.py
+++ b/ping/views/network.py
@@ -1,11 +1,6 @@
-import os
 import platform
-import shutil
 import subprocess
 import re
-import zipfile
-
-from django.conf import settings
 
 from django.http import HttpResponse, HttpResponseRedirect
 from django.template import loader
@@ -13,8 +8,7 @@ from django.urls import reverse
 from iotAmak.tool.remote_client import RemoteClient
 from iotAmak.tool.ssh_client import SSHClient, Cmd
 
-from .models import Client, Agent, Experiment, ExperimentForm
-
+from ..models import Client, Agent
 
 def get_remote_client():
     res = []
@@ -106,77 +100,4 @@ def pressed(request):
             c.status = "Offline"
         c.save()
 
-    return HttpResponseRedirect(reverse('ping:index'))
-
-
-def entry(request):
-    if request.method == 'POST':
-        form = ExperimentForm(request.POST, request.FILES)
-
-        if form.is_valid():
-            form.save()
-            return HttpResponseRedirect(reverse('ping:experiment'))
-
-    else:
-        form = ExperimentForm()
-        template = loader.get_template('ping/entry.html')
-        context = {"form": form}
-        return HttpResponse(template.render(context, request))
-
-def empty_tmp():
-    folder = str(settings.MEDIA_ROOT) + "/tmp"
-    for filename in os.listdir(folder):
-        file_path = os.path.join(folder, filename)
-        try:
-            if os.path.isfile(file_path) or os.path.islink(file_path):
-                os.unlink(file_path)
-            elif os.path.isdir(file_path):
-                shutil.rmtree(file_path)
-        except Exception as e:
-            print('Failed to delete %s. Reason: %s' % (file_path, e))
-
-def check(request, experiment_id):
-    # get the path
-    print(experiment_id)
-    exp = Experiment.objects.get(pk=experiment_id)
-    print(str(exp.media))
-    print(str(settings.MEDIA_ROOT) + str(exp.media))
-    # check if it's a zip -> wrong format : not zip
-    print()
-
-    if not zipfile.is_zipfile(str(settings.MEDIA_ROOT) + str(exp.media)):
-        exp.status = "Wrong format : zip file expected"
-        exp.save()
-        return HttpResponseRedirect(reverse('ping:experiment'))
-
-    with zipfile.ZipFile(str(settings.MEDIA_ROOT) + str(exp.media), 'r') as zip_ref:
-        zip_ref.extractall(str(settings.MEDIA_ROOT) + "/tmp")
-
-    folder_path = str(settings.MEDIA_ROOT) + "/tmp/" + exp.name
-
-    if not os.path.isdir(folder_path):
-        exp.status = "Wrong format : zip should contain a folder"
-        exp.save()
-        empty_tmp()
-        return HttpResponseRedirect(reverse('ping:experiment'))
-
-    required_files = ["amas.py", "agent.py", "env.py", "scheduler.py"]
-    for required_file in required_files:
-        if not os.path.exists(folder_path + "/" + required_file):
-            exp.status = "Wrong format : " + required_file + " file is expected"
-            exp.save()
-            empty_tmp()
-            return HttpResponseRedirect(reverse('ping:experiment'))
-
-    exp.status = "Checked"
-    exp.save()
-    empty_tmp()
-    return HttpResponseRedirect(reverse('ping:experiment'))
-
-
-def experiment(request):
-    template = loader.get_template('ping/experiment.html')
-    context = {
-        "experiments": Experiment.objects.all(),
-    }
-    return HttpResponse(template.render(context, request))
+    return HttpResponseRedirect(reverse('ping:index'))
\ No newline at end of file