diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts
index bc31e6c..dc0cf7f 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/imports-tab/imports-tab.component.ts
@@ -1,7 +1,7 @@
-import {Component, OnInit} from '@angular/core';
-import {FileSystemFileEntry, NgxFileDropEntry} from 'ngx-file-drop';
-import {PackageCreationStore} from '../package-creation.store';
-import {PackageCreationUtils} from '../package-creation.utils';
+import { Component, OnInit } from '@angular/core';
+import { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop';
+import { PackageCreationStore } from '../package-creation.store';
+import { PackageCreationUtils } from '../package-creation.utils';
 
 
 @Component({
@@ -18,6 +18,8 @@
     public files: NgxFileDropEntry[] = [];
 
     constructor(private packageCreationStore: PackageCreationStore, private packageCreationUtils: PackageCreationUtils) {
+    }
+    ngOnInit(): void {
         this.packageCreationStore.state$.subscribe(cbaPackage => {
             if (cbaPackage.definitions && cbaPackage.definitions.imports && cbaPackage.definitions.imports.size > 0) {
                 this.definitionFiles = cbaPackage.definitions.imports;
@@ -25,10 +27,6 @@
         });
     }
 
-    ngOnInit(): void {
-        // TODO
-    }
-
     public dropped(files: NgxFileDropEntry[]) {
         this.files = files;
         for (const droppedFile of files) {
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html
index 0ae8efb..89724be 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.html
@@ -2,12 +2,11 @@
     <div class="single-line">
         <label class="label-name">Mode</label>
         <label name="trst" *ngFor="let mode of modes; let i = index">
-            <input class="form-check-input" [(ngModel)]="metaDataTab.mode" type="radio" name="exampleRadios"
-                  id="exampleRadios1" value={{mode.name}}>
+            <input class="form-check-input" [(ngModel)]="modeType" type="radio" name="radioMode" id="radioMode"
+                [value]="mode.name">
 
             <span>
-                <i [className]="mode.style" aria-hidden="true"
-                   [id]="mode.name"></i>
+                <i [className]="mode.style" aria-hidden="true" [id]="mode.name"></i>
                 {{mode.name}}
             </span>
         </label>
@@ -31,7 +30,7 @@
         <label class="label-name">Name <span>*</span></label>
         <div class="label-input">
             <input type="input" [readOnly]="!packageNameAndVersionEnables" [(ngModel)]="metaDataTab.name"
-                   placeholder="Topology name.vLB.CDS">
+                placeholder="Topology name.vLB.CDS">
         </div>
         <!--<div class="model-note-container error-message">
             Package name already exists with this version. Please enter a different name or enter different version
@@ -42,8 +41,8 @@
     <div class="single-line-model">
         <label class="label-name">Version <span>*</span></label>
         <div class="label-input">
-            <input type="input" [readOnly]="!packageNameAndVersionEnables" [(ngModel)]="metaDataTab.version" (input)="validatePackageNameAndVersion()"
-                   placeholder="Example: 1.0.0">
+            <input type="input" [readOnly]="!packageNameAndVersionEnables" [(ngModel)]="metaDataTab.version"
+                (input)="validatePackageNameAndVersion()" placeholder="Example: 1.0.0">
         </div>
         <div class="model-note-container error-message">{{errorMessage}}</div>
     </div>
@@ -58,13 +57,13 @@
         <label class="label-name">tags</label>
         <div class="label-input">
             <input type="input" (keyup.enter)="addTag($event)" [(ngModel)]="metaDataTab.tags"
-                   placeholder="Ex., vDNS-CDS">
+                placeholder="Ex., vDNS-CDS">
 
         </div>
         <div class="model-note-container tag-notes">Seprate tags with comma or space</div>
         <div class="model-note-container tages-container">
             <span *ngFor="let tag of tags" class="single-tage">{{tag}} <i (click)="removeTag(tag)"
-                                                                          class="fa fa-times-circle"></i></span>
+                    class="fa fa-times-circle"></i></span>
         </div>
     </div>
 </div>
@@ -91,8 +90,8 @@
                     </div>
                 </div>
                 <div class="single-line-custom-key-delete">
-                    <button (click)="removeKey($event,map.key)"
-                            class="custom-key-delete"><i aria-hidden="true" class="icon-delete"></i></button>
+                    <button (click)="removeKey($event,map.key)" class="custom-key-delete"><i aria-hidden="true"
+                            class="icon-delete"></i></button>
                 </div>
             </div>
 
@@ -101,14 +100,14 @@
                     <label class="label-name"><span>{{customKeysMap.size + 1}}.</span> Name</label>
                     <div class="label-input">
                         <input (keyup.enter)="addCustomKey()" name="key" type="input" class="mapKey"
-                               placeholder="Enter name">
+                            placeholder="Enter name">
                     </div>
                 </div>
                 <div class="single-line-custom-key">
                     <label class="label-name">Value</label>
                     <div class="label-input">
                         <input (keyup.enter)="addCustomKey()" class="mapValue" name="value" type="input"
-                               placeholder="Enter value">
+                            placeholder="Enter value">
                     </div>
                 </div>
                 <!-- <div class="single-line-custom-key-delete"><button (click)="removeKey($event)"
@@ -117,4 +116,4 @@
 
         </div>
     </div>
-</div>
+</div>
\ No newline at end of file
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts
index 63c10ad..3a9b7b8 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/metadata-tab/metadata-tab.component.ts
@@ -1,8 +1,8 @@
-import {Component, OnInit} from '@angular/core';
-import {PackageCreationService} from '../package-creation.service';
-import {MetaDataTabModel} from '../mapping-models/metadata/MetaDataTab.model';
-import {PackageCreationStore} from '../package-creation.store';
-import {ActivatedRoute} from '@angular/router';
+import { Component, OnInit } from '@angular/core';
+import { PackageCreationService } from '../package-creation.service';
+import { MetaDataTabModel } from '../mapping-models/metadata/MetaDataTab.model';
+import { PackageCreationStore } from '../package-creation.store';
+import { ActivatedRoute } from '@angular/router';
 
 
 @Component({
@@ -15,16 +15,18 @@
     counter = 0;
     tags = new Set<string>();
     customKeysMap = new Map();
-    modes: object[] = [
-        {name: 'Designer Mode', style: 'mode-icon icon-designer-mode'}];
+    modes: any[] = [
+        { name: 'Designer Mode', style: 'mode-icon icon-designer-mode' }];
     /*  {name: 'Scripting Mode', style: 'mode-icon icon-scripting-mode'},
       {name: 'Generic Script Mode', style: 'mode-icon icon-generic-script-mode'}];*/
+    modeType = this.modes[0].name;
     private metaDataTab: MetaDataTabModel = new MetaDataTabModel();
     private errorMessage: string;
 
-    constructor(private route: ActivatedRoute,
-                private packageCreationService: PackageCreationService,
-                private packageCreationStore: PackageCreationStore
+    constructor(
+        private route: ActivatedRoute,
+        private packageCreationService: PackageCreationService,
+        private packageCreationStore: PackageCreationStore
     ) {
 
     }
@@ -32,6 +34,7 @@
     ngOnInit() {
         this.metaDataTab.templateTags = this.tags;
         this.metaDataTab.mapOfCustomKey = this.customKeysMap;
+        this.metaDataTab.mode = this.modeType;
 
         const id = this.route.snapshot.paramMap.get('id');
         id ? this.packageNameAndVersionEnables = false :
@@ -46,8 +49,9 @@
                 this.tags = element.metaData.templateTags;
                 this.metaDataTab.templateTags = this.tags;
                 console.log(element);
-                if (element.metaData.mode && element.metaData.mode.includes(' DEFAULT')) {
+                if (element.metaData.mode && element.metaData.mode.includes('DEFAULT')) {
                     this.metaDataTab.mode = 'Designer Mode';
+                    this.modeType = this.metaDataTab.mode;
                 }
 
                 this.customKeysMap = element.metaData.mapOfCustomKey;
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html
index 8d1894c..5dd68ed 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.html
@@ -24,7 +24,8 @@
                             aria-expanded="false" class="btn btn-link collapsed" data-toggle="collapse">
                             <i class="icon-file-code"></i> {{file.key}}
                         </button>
-                        <a (click)="removeFile(mapIndex)" class="accordion-delete"><i class="icon-delete"></i></a>
+                        <a (click)="removeFile(file.key,mapIndex)" class="accordion-delete"><i
+                                class="icon-delete"></i></a>
                     </h5>
                 </div>
                 <div [attr.aria-labelledby]="'head-script-'+mapIndex" [id]="'id-script-'+mapIndex" class="collapse"
diff --git a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts
index 36cccc8..5387489 100644
--- a/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts
+++ b/cds-ui/designer-client/src/app/modules/feature-modules/packages/package-creation/scripts-tab/scripts-tab.component.ts
@@ -1,6 +1,6 @@
-import {Component, OnInit} from '@angular/core';
-import {FileSystemFileEntry, NgxFileDropEntry} from 'ngx-file-drop';
-import {PackageCreationStore} from '../package-creation.store';
+import { Component, OnInit } from '@angular/core';
+import { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop';
+import { PackageCreationStore } from '../package-creation.store';
 import 'ace-builds/src-noconflict/ace';
 import 'ace-builds/webpack-resolver';
 
@@ -18,9 +18,7 @@
 
     constructor(
         private packageCreationStore: PackageCreationStore,
-    ) {
-
-    }
+    ) { }
 
 
     ngOnInit() {
@@ -29,13 +27,6 @@
                 this.scriptsFiles = cbaPackage.scripts.files;
             }
         });
-
-        /* this.packageStore.state$.subscribe(res => {
-             //  this.scriptsFiles =
-             console.log('from scripts');
-             console.log(res.scripts);
-             this.scriptsFiles = res.scripts.files;
-         });*/
     }
 
     public dropped(files: NgxFileDropEntry[]) {
@@ -52,11 +43,18 @@
         }
     }
 
-    removeFile(fileIndex: number) {
-        console.log(this.uploadedFiles[fileIndex]);
-        const filename = 'Scripts/' + this.uploadedFiles[fileIndex].name;
-        this.packageCreationStore.removeFileFromState(filename);
-        this.uploadedFiles.splice(fileIndex, 1);
+    removeFile(filePath: string, FileIndex: number) {
+        const filename = filePath.split('/')[2] || '';
+        //  const filename = 'Scripts/' + this.getFileType(this.uploadedFiles[fileIndex].name) + '/' + this.uploadedFiles[fileIndex].name;
+        this.packageCreationStore.removeFileFromState(filePath);
+        // remove from upload files array
+        // tslint:disable-next-line: prefer-for-of
+        for (let i = 0; i < this.uploadedFiles.length; i++) {
+            if (this.uploadedFiles[i].name === filename) {
+                this.uploadedFiles.splice(i, 1);
+                break;
+            }
+        }
     }
 
     public fileOver(event) {
@@ -73,7 +71,7 @@
             droppedFile.file((file: File) => {
                 const fileReader = new FileReader();
                 fileReader.onload = (e) => {
-                    this.packageCreationStore.addScripts('Scripts/' + droppedFile.name,
+                    this.packageCreationStore.addScripts('Scripts/' + this.getFileType(droppedFile.name) + '/' + droppedFile.name,
                         fileReader.result.toString());
                 };
                 fileReader.readAsText(file);
@@ -82,6 +80,17 @@
         }
     }
 
+    getFileType(filename: string): string {
+        let fileType = '';
+        const fileExtension = filename.substring(filename.lastIndexOf('.') + 1);
+        if (fileExtension === 'py') {
+            fileType = 'python';
+        } else if (fileExtension === 'kt') {
+            fileType = 'kotlin';
+        }
+        return fileType;
+    }
+
     resetTheUploadedFiles() {
         this.uploadedFiles = [];
     }
diff --git a/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html b/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html
index f57ab10..502e098 100644
--- a/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html
+++ b/cds-ui/designer-client/src/app/modules/shared-modules/header/header.component.html
@@ -5,14 +5,14 @@
     <div class="overflow-container">
       <ul class="menu-dropdown">
         <li class="active">
-          <a routerLink="packages/list">Packages</a>
+          <a routerLink="/packages">Packages</a>
           <span class="icon">
             <!-- <i class="fa fa-dashboard"></i> -->
             <i class="icon-package"></i>
           </span>
         </li>
         <li class="menu-hasdropdown">
-          <a href="#">Data Dictionary</a>
+          <a >Data Dictionary</a>
           <span class="icon">
             <i class="icon-dictionary"></i>
           </span>
