diff --git a/webapp-frontend/src/app/interceptor.mock.ts b/webapp-frontend/src/app/interceptor.mock.ts
index ad0d080..42e6855 100644
--- a/webapp-frontend/src/app/interceptor.mock.ts
+++ b/webapp-frontend/src/app/interceptor.mock.ts
@@ -18,159 +18,196 @@
  * ========================LICENSE_END===================================
  */
 
-import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';
-import { Injectable, Injector } from '@angular/core';
-import { Observable, of } from 'rxjs';
-import * as policyinstance1 from './mock/policy-instance-1.json';
-import * as noTypePolicies from './mock/no-type-policies.json';
-import * as typedPolicies from './mock/policies.json';
-import * as policyinstance2 from './mock/policy-instance-2.json';
-import * as noTypePolicyinstance from './mock/policy-instance-notype.json';
-import * as policyinstance1Status from './mock/policy-instance-1-status.json';
-import * as policyinstance2Status from './mock/policy-instance-2-status.json';
-import * as eijobsProd1 from './mock/ei-jobs-producer1.json';
-import * as eijobsProd2 from './mock/ei-jobs-producer2.json';
-import * as eiProducerIds from './mock/ei-producerids.json';
-import * as eiproducer1 from './mock/ei-producer1.json';
-import * as eiproducer2 from './mock/ei-producer2.json';
-import * as eiproducerstatus1 from './mock/ei-producer-status1.json';
-import * as eiproducerstatus2 from './mock/ei-producer-status2.json';
-import * as policytypesList from './mock/policy-types.json';
-import * as policytypes1 from './mock/policy-type1.json';
-import * as policytypes0 from './mock/policy-type0.json';
-import * as policyinstanceedit from './mock/policy-instance-edit.json';
-import * as ric1 from './mock/ric1.json';
-import * as ric2 from './mock/ric2.json';
+import {
+  HttpEvent,
+  HttpHandler,
+  HttpInterceptor,
+  HttpRequest,
+  HttpResponse,
+} from "@angular/common/http";
+import { Injectable, Injector } from "@angular/core";
+import { Observable, of } from "rxjs";
+import * as policyinstance1 from "./mock/policy-instance-1.json";
+import * as noTypePolicies from "./mock/no-type-policies.json";
+import * as type0Policies from "./mock/type0-policies.json";
+import * as type1Policies from "./mock/type1-policies.json";
+import * as policyinstance2 from "./mock/policy-instance-2.json";
+import * as noTypePolicyinstance from "./mock/policy-instance-notype.json";
+import * as policyinstance1Status from "./mock/policy-instance-1-status.json";
+import * as policyinstance2Status from "./mock/policy-instance-2-status.json";
+import * as eijobsProd1 from "./mock/ei-jobs-producer1.json";
+import * as eijobsProd2 from "./mock/ei-jobs-producer2.json";
+import * as eiProducerIds from "./mock/ei-producerids.json";
+import * as eiproducer1 from "./mock/ei-producer1.json";
+import * as eiproducer2 from "./mock/ei-producer2.json";
+import * as eiproducerstatus1 from "./mock/ei-producer-status1.json";
+import * as eiproducerstatus2 from "./mock/ei-producer-status2.json";
+import * as policytypes1 from "./mock/policy-type1.json";
+import * as policytypes0 from "./mock/policy-type0.json";
+import * as policyinstanceedit from "./mock/policy-instance-edit.json";
+import * as ric1 from "./mock/ric1.json";
+import * as ric2 from "./mock/ric2.json";
+import { delay } from "rxjs/operators";
 
 const urls = [
-    {
-        url: '/a1-policy/v2/policy-types',
-        json: policytypesList
-    },
-    {
-        url: '/a1-policy/v2/policy-types/1',
-        json: policytypes1
-    },
-    {
-        url: '/a1-policy/v2/policy-types/0',
-        json: policytypes0
-    },
-    {
-        url: '/a1-policy/v2/policies?policytype_id=',
-        json: noTypePolicies
-    },
-    {
-        url: '/a1-policy/v2/policies?policytype_id=1',
-        json: typedPolicies
-    },
-    {
-        url: '/a1-policy/v2/policies/2001',
-        json: noTypePolicyinstance
-    },
-    {
-        url: '/a1-policy/v2/policies/2000',
-        json: policyinstance1
-    },
-    {
-        url: '/a1-policy/v2/policies/2100',
-        json: policyinstance2
-    },
-    {
-        url: '/a1-policy/v2/policies/2001/status',
-        json: policyinstance1Status
-    },
-    {
-        url: '/a1-policy/v2/policies/2000/status',
-        json: policyinstance1Status
-    },
-    {
-        url: '/a1-policy/v2/policies/2100/status',
-        json: policyinstance2Status
-    },
-    {
-        url: '/a1-policy/v2/policies/2000?type=',
-        json: policyinstanceedit
-    },
-    {
-        url: '/a1-policy/v2/policies/2100?type=',
-        json: policyinstanceedit
-    },
-    {
-        url: '/a1-policy/v2/policies/2000?type=1',
-        json: policyinstanceedit
-    },
-    {
-        url: '/a1-policy/v2/policies/2100?type=1',
-        json: policyinstanceedit
-    },
-    {
-        url: '/a1-policy/v2/policies/2000?ric=ric1&type=1',
-        json: ''
-    },
-    {
-        url: '/a1-policy/v2/rics?policytype_id=1',
-        json: ric1
-    },
-    {
-        url: '/a1-policy/v2/rics?policytype_id=',
-        json: ric2
-    },
-    {
-        url: '/ei-producer/v1/eiproducers',
-        json: eiProducerIds
-    },
-    {
-        url: '/ei-producer/v1/eiproducers/producer1',
-        json: eiproducer1
-    },
-    {
-        url: '/ei-producer/v1/eiproducers/producer2',
-        json: eiproducer2
-    },
-    {
-        url: '/ei-producer/v1/eiproducers/producer1/status',
-        json: eiproducerstatus1
-    },
-    {
-        url: '/ei-producer/v1/eiproducers/producer2/status',
-        json: eiproducerstatus2
-    },
-    {
-        url: '/ei-producer/v1/eiproducers/producer1/eijobs',
-        json: eijobsProd1
-    },
-    {
-        url: '/ei-producer/v1/eiproducers/producer2/eijobs',
-        json: eijobsProd2
-    }
+  {
+    url: "/a1-policy/v2/policy-types/1",
+    json: policytypes1,
+  },
+  {
+    url: "/a1-policy/v2/policy-types/0",
+    json: policytypes0,
+  },
+  {
+    url: "/a1-policy/v2/policies?policytype_id=",
+    json: noTypePolicies,
+  },
+  {
+    url: "/a1-policy/v2/policies?policytype_id=0",
+    json: type0Policies,
+  },
+  {
+    url: "/a1-policy/v2/policies?policytype_id=1",
+    json: type1Policies,
+  },
+  {
+    url: "/a1-policy/v2/policies/2001",
+    json: noTypePolicyinstance,
+  },
+  {
+    url: "/a1-policy/v2/policies/2000",
+    json: policyinstance1,
+  },
+  {
+    url: "/a1-policy/v2/policies/2100",
+    json: policyinstance2,
+  },
+  {
+    url: "/a1-policy/v2/policies/2001/status",
+    json: policyinstance1Status,
+  },
+  {
+    url: "/a1-policy/v2/policies/2000/status",
+    json: policyinstance1Status,
+  },
+  {
+    url: "/a1-policy/v2/policies/2100/status",
+    json: policyinstance2Status,
+  },
+  {
+    url: "/a1-policy/v2/policies/2000?type=",
+    json: policyinstanceedit,
+  },
+  {
+    url: "/a1-policy/v2/policies/2100?type=",
+    json: policyinstanceedit,
+  },
+  {
+    url: "/a1-policy/v2/policies/2000?type=1",
+    json: policyinstanceedit,
+  },
+  {
+    url: "/a1-policy/v2/policies/2100?type=1",
+    json: policyinstanceedit,
+  },
+  {
+    url: "/a1-policy/v2/policies/2000?ric=ric1&type=1",
+    json: "",
+  },
+  {
+    url: "/a1-policy/v2/rics?policytype_id=1",
+    json: ric1,
+  },
+  {
+    url: "/a1-policy/v2/rics?policytype_id=",
+    json: ric2,
+  },
+  {
+    url: "/ei-producer/v1/eiproducers",
+    json: eiProducerIds,
+  },
+  {
+    url: "/ei-producer/v1/eiproducers/producer1",
+    json: eiproducer1,
+  },
+  {
+    url: "/ei-producer/v1/eiproducers/producer2",
+    json: eiproducer2,
+  },
+  {
+    url: "/ei-producer/v1/eiproducers/producer1/status",
+    json: eiproducerstatus1,
+  },
+  {
+    url: "/ei-producer/v1/eiproducers/producer2/status",
+    json: eiproducerstatus2,
+  },
+  {
+    url: "/ei-producer/v1/eiproducers/producer1/eijobs",
+    json: eijobsProd1,
+  },
+  {
+    url: "/ei-producer/v1/eiproducers/producer2/eijobs",
+    json: eijobsProd2,
+  },
 ];
 
 @Injectable()
 export class HttpMockRequestInterceptor implements HttpInterceptor {
-    constructor(private injector: Injector) { }
-    private numberOfTypes = 0;
+  private toggleTypes = true;
 
-    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
-        if (request.method === "PUT" && request.url.includes("policies")) {
-            console.log('Answered PUT policy ', request.url, request.body);
-            return of(new HttpResponse({ status: 200 }));
+  constructor(private injector: Injector) {}
+
+  intercept(
+    request: HttpRequest<any>,
+    next: HttpHandler
+  ): Observable<HttpEvent<any>> {
+    let result: HttpResponse<any>;
+    if (request.method === "PUT" && request.url.includes("policies")) {
+      result = new HttpResponse({ status: 200 });
+    } else if (request.method === "DELETE") {
+      result = new HttpResponse({ status: 204 });
+    } else if (request.url === "/a1-policy/v2/policy-types") {
+      result = this.getAlternatingNoOfTypes();
+    } else {
+      for (const element of urls) {
+        if (request.url === element.url) {
+          result = new HttpResponse({
+            status: 200,
+            body: (element.json as any).default,
+          });
         }
-        if (request.url === "/a1-policy/v2/policy-types" && this.numberOfTypes > 0) {
-            this.numberOfTypes = 0;
-            return of(new HttpResponse({status: 200, body:JSON.parse('{"policytype_ids": ["","1"]}')}));
-        } else {
-            this.numberOfTypes = 1;
-        }
-        for (const element of urls) {
-            if (request.url === element.url) {
-                console.log('Loaded from stub json : ' + request.url);
-                if (request.method === 'DELETE') {
-                    return of(new HttpResponse({ status: 204 }));
-                }
-                return of(new HttpResponse({ status: 200, body: ((element.json) as any).default }));
-            }
-        }
-        console.log('Loaded from mock http call :' + request.url);
-        return next.handle(request);
+      }
     }
-}
\ No newline at end of file
+
+    if (result) {
+      console.log(
+        "Mock answering http call :" + request.method + " " + request.url,
+        request.method === "PUT" ? request.body : null
+      );
+      console.log("Returning: " + result.status, result.body);
+      // Adding a delay to simulate real server call.
+      return of(result).pipe(delay(10));
+    } else {
+      return next.handle(request);
+    }
+  }
+
+  getAlternatingNoOfTypes(): HttpResponse<any> {
+    let result: HttpResponse<any>;
+    if (this.toggleTypes) {
+      this.toggleTypes = false;
+      result = new HttpResponse({
+        status: 200,
+        body: JSON.parse('{"policytype_ids": ["","1","0"]}'),
+      });
+    } else {
+      this.toggleTypes = true;
+      result = new HttpResponse({
+        status: 200,
+        body: JSON.parse('{"policytype_ids": ["","1"]}'),
+      });
+    }
+    return result;
+  }
+}
diff --git a/webapp-frontend/src/app/mock/policy-types.json b/webapp-frontend/src/app/mock/policy-types.json
deleted file mode 100644
index c65b820..0000000
--- a/webapp-frontend/src/app/mock/policy-types.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "policytype_ids": [
-    "",
-    "1",
-    "0"
-  ]
-}
\ No newline at end of file
diff --git a/webapp-frontend/src/app/mock/policytypes.json b/webapp-frontend/src/app/mock/policytypes.json
deleted file mode 100644
index a59e12d..0000000
--- a/webapp-frontend/src/app/mock/policytypes.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
-  {
-    "name": "2",
-    "schema": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"description\":\"Type 2 policy type\",\"additionalProperties\":false,\"title\":\"2\",\"type\":\"object\",\"properties\":{\"qosObjectives\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"priorityLevel\":{\"type\":\"number\"}},\"required\":[\"priorityLevel\"]},\"scope\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"qosId\":{\"type\":\"string\"},\"ueId\":{\"type\":\"string\"}},\"required\":[\"ueId\",\"qosId\"]}},\"required\":[\"scope\",\"qosObjectives\"]}"
-  },
-  {
-    "name": "1",
-    "schema": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"description\":\"Type 1 policy type\",\"additionalProperties\":false,\"title\":\"1\",\"type\":\"object\",\"properties\":{\"qosObjectives\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"priorityLevel\":{\"type\":\"number\"}},\"required\":[\"priorityLevel\"]},\"scope\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"qosId\":{\"type\":\"string\"},\"ueId\":{\"type\":\"string\"}},\"required\":[\"ueId\",\"qosId\"]}},\"required\":[\"scope\",\"qosObjectives\"]}"
-  },
-  {
-    "name": "0",
-    "schema": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"description\":\"Type 0 policy type (no instances)\",\"additionalProperties\":false,\"title\":\"1\",\"type\":\"object\",\"properties\":{\"qosObjectives\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"priorityLevel\":{\"type\":\"number\"}},\"required\":[\"priorityLevel\"]},\"scope\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"qosId\":{\"type\":\"string\"},\"ueId\":{\"type\":\"string\"}},\"required\":[\"ueId\",\"qosId\"]}},\"required\":[\"scope\",\"qosObjectives\"]}"
-  }
-  ]
\ No newline at end of file
diff --git a/webapp-frontend/src/app/mock/type0-policies.json b/webapp-frontend/src/app/mock/type0-policies.json
new file mode 100644
index 0000000..e70a064
--- /dev/null
+++ b/webapp-frontend/src/app/mock/type0-policies.json
@@ -0,0 +1,3 @@
+{
+  "policy_ids": []
+}
\ No newline at end of file
diff --git a/webapp-frontend/src/app/mock/policies.json b/webapp-frontend/src/app/mock/type1-policies.json
similarity index 100%
rename from webapp-frontend/src/app/mock/policies.json
rename to webapp-frontend/src/app/mock/type1-policies.json
diff --git a/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts b/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts
index 53ab8b1..1649d39 100644
--- a/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts
+++ b/webapp-frontend/src/app/policy/policy-instance/policy-instance.component.ts
@@ -154,14 +154,11 @@
   }
 
   modifyInstance(instance: PolicyInstance): void {
-    let refreshedInstance: PolicyInstance;
     this.policySvc
       .getPolicyInstance(instance.policy_id)
-      .subscribe((refreshedJson: any) => {
-        refreshedInstance = refreshedJson;
+      .subscribe((refreshedJson: PolicyInstance) => {
+        this.openInstanceDialog(refreshedJson);
       });
-
-    this.openInstanceDialog(refreshedInstance);
   }
 
   private openInstanceDialog(policy: PolicyInstance) {
