diff --git a/package.json b/package.json
index 5861c4b64df07d60594dbc353176ee705a45b93d..4dd5312780bdafb4fcbf0b1bcdb77c7204e9d813 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
   "config": {
     "player_version": "1.20.1",
     "editor_version": "1.26.1",
-    "unit_definition_version": "2.0.0"
+    "unit_definition_version": "3.0.0"
   },
   "scripts": {
     "ng": "ng",
diff --git a/projects/common/interfaces/elements.ts b/projects/common/interfaces/elements.ts
index 0fb9e510ce3ce833cae130544a33a1e9f2a4b718..aa0048e0f11e8917237aa99057f14a65026d8cd2 100644
--- a/projects/common/interfaces/elements.ts
+++ b/projects/common/interfaces/elements.ts
@@ -55,10 +55,10 @@ export interface PositionProperties {
   xPosition: number;
   yPosition: number;
   useMinHeight: boolean;
-  gridColumnStart: number;
-  gridColumnEnd: number;
-  gridRowStart: number;
-  gridRowEnd: number;
+  gridColumn: number;
+  gridColumnRange: number;
+  gridRow: number;
+  gridRowRange: number;
   marginLeft: number;
   marginRight: number;
   marginTop: number;
diff --git a/projects/common/util/element.factory.ts b/projects/common/util/element.factory.ts
index 8656b35d4c6738778ada40b01d3ff55ede6ab54a..faaa9f80bbbc34c252fc5a37698ca99a435c3eee 100644
--- a/projects/common/util/element.factory.ts
+++ b/projects/common/util/element.factory.ts
@@ -111,10 +111,10 @@ export abstract class ElementFactory {
       xPosition: defaults.xPosition !== undefined ? defaults.xPosition as number : 0,
       yPosition: defaults.yPosition !== undefined ? defaults.yPosition as number : 0,
       useMinHeight: defaults.useMinHeight !== undefined ? defaults.useMinHeight as boolean : false,
-      gridColumnStart: defaults.gridColumnStart !== undefined ? defaults.gridColumnStart as number : 1,
-      gridColumnEnd: defaults.gridColumnEnd !== undefined ? defaults.gridColumnEnd as number : 2,
-      gridRowStart: defaults.gridRowStart !== undefined ? defaults.gridRowStart as number : 1,
-      gridRowEnd: defaults.gridRowEnd !== undefined ? defaults.gridRowEnd as number : 2,
+      gridColumn: defaults.gridColumn !== undefined ? defaults.gridColumn as number : 1,
+      gridColumnRange: defaults.gridColumnRange !== undefined ? defaults.gridColumnRange as number : 1,
+      gridRow: defaults.gridRow !== undefined ? defaults.gridRow as number : 1,
+      gridRowRange: defaults.gridRowRange !== undefined ? defaults.gridRowRange as number : 1,
       marginLeft: defaults.marginLeft !== undefined ? defaults.marginLeft as number : 0,
       marginRight: defaults.marginRight !== undefined ? defaults.marginRight as number : 0,
       marginTop: defaults.marginTop !== undefined ? defaults.marginTop as number : 0,
@@ -216,7 +216,7 @@ export abstract class ElementFactory {
       asLink: element.asLink !== undefined ? element.asLink : false,
       action: element.action || null,
       actionParam: element.actionParam !== undefined ? element.actionParam : null,
-      position: ElementFactory.initPositionProps(element.positionProps as Record<string, UIElementValue>),
+      position: ElementFactory.initPositionProps(element.position as Record<string, UIElementValue>),
       styling: {
         ...ElementFactory.initBasicStyles(element.styling),
         borderRadius: element.borderRadius !== undefined ? element.borderRadius as number : 0
diff --git a/projects/common/util/unit-definition-sanitizer.ts b/projects/common/util/unit-definition-sanitizer.ts
index 7eeb2d5a4f9701a007ce3595f62ddcad782badbc..fd99cff9c93b39b6940946ae6d48a298e5c070ef 100644
--- a/projects/common/util/unit-definition-sanitizer.ts
+++ b/projects/common/util/unit-definition-sanitizer.ts
@@ -35,7 +35,7 @@ export abstract class UnitDefinitionSanitizer {
     }
 
     if (UnitDefinitionSanitizer.isVersionOlderThanCurrent(UnitDefinitionSanitizer.unitDefinitionVersion)) {
-      console.log('SANATIZING');
+      console.log('Sanatizing unit definition...');
       const x = {
         ...unitDefinition,
         pages: unitDefinition.pages.map((page: Page) => UnitDefinitionSanitizer.sanatizePage(page))
@@ -106,8 +106,17 @@ export abstract class UnitDefinitionSanitizer {
     return newElement as unknown as UIElement;
   }
 
-  private static getPositionProps(element: Record<string, UIElementValue>): PositionProperties {
+  private static getPositionProps(element: Record<string, any>): PositionProperties {
     if (element.position !== undefined) {
+      if (element.position?.gridColumnStart !== undefined) {
+        return {
+          ...element.position,
+          gridColumn: element.position.gridColumnStart,
+          gridColumnRange: element.position.gridColumnEnd - element.position.gridColumnStart,
+          gridRow: element.position.gridRowStart,
+          gridRowRange: element.position.gridRowEnd - element.position.gridRowStart
+        };
+      }
       return element.position as PositionProperties;
     }
     if (element.positionProps !== undefined) {
diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/dynamic-section-helper-grid.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/dynamic-section-helper-grid.component.ts
index 0263d57f6ab8f1f362d135942ca4c4cc66f299eb..9e40235047b7cf38d8cdc47a9dea6d4b0c6e52d6 100644
--- a/projects/editor/src/app/components/unit-view/page-view/canvas/dynamic-section-helper-grid.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/canvas/dynamic-section-helper-grid.component.ts
@@ -1,6 +1,5 @@
 import { CdkDragDrop } from '@angular/cdk/drag-drop/drag-events';
 import {
-  ChangeDetectorRef,
   Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges
 } from '@angular/core';
 import { UIElement, UIElementType } from '../../../../../../../common/interfaces/elements';
@@ -70,11 +69,12 @@ export class DynamicSectionHelperGridComponent implements OnInit, OnChanges {
     let numberOfColumns;
     if (this.autoColumnSize) {
       numberOfColumns = this.section.elements
-        .reduce((accumulator, currentValue) => Math.max(accumulator, currentValue.position.gridColumnEnd as number),
+        .reduce((accumulator, currentValue) => Math.max(accumulator, currentValue.position.gridColumn + currentValue.position.gridColumnRange),
           0) - 1;
     } else {
       numberOfColumns = this.gridColumnSizes.split(' ').length;
     }
+    console.log('numberOfColumns', numberOfColumns);
     this.columnCountArray = Array(Math.max(numberOfColumns, 1));
   }
 
@@ -82,7 +82,7 @@ export class DynamicSectionHelperGridComponent implements OnInit, OnChanges {
     let numberOfRows;
     if (this.autoRowSize) {
       numberOfRows = this.section.elements
-        .reduce((accumulator, currentValue) => Math.max(accumulator, currentValue.position.gridRowEnd as number),
+        .reduce((accumulator, currentValue) => Math.max(accumulator, currentValue.position.gridRow + currentValue.position.gridRowRange),
           0) - 1;
     } else {
       numberOfRows = this.gridRowSizes.split(' ').length;
diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/element-grid-change-listener.directive.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/element-grid-change-listener.directive.ts
index 5378abecec304b669404489fb58f92f653f98d5b..4cc49c5c33293ef7f8f24f3cc2da04f70eadd371 100644
--- a/projects/editor/src/app/components/unit-view/page-view/canvas/element-grid-change-listener.directive.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/canvas/element-grid-change-listener.directive.ts
@@ -7,10 +7,10 @@ import {
 })
 export class ElementGridChangeListenerDirective implements OnChanges {
   @Input() autoColumnSize!: boolean;
-  @Input() gridColumnStart!: number;
-  @Input() gridColumnEnd!: number;
-  @Input() gridRowStart!: number;
-  @Input() gridRowEnd!: number;
+  @Input() gridColumn!: number;
+  @Input() gridColumnRange!: number;
+  @Input() gridRow!: number;
+  @Input() gridRowRange!: number;
 
   @Output() elementChanged = new EventEmitter();
 
diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts
index a391be8a9320ab06cebc3fa7730ef4448dc1f145..cd613817236cfe09cd6b8b618e82bdaf3b889ab3 100644
--- a/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/canvas/section-dynamic.component.ts
@@ -39,20 +39,20 @@ import { DynamicSectionHelperGridComponent } from './dynamic-section-helper-grid
                                      [style.margin-right.px]="element.position.marginRight"
                                      [style.margin-top.px]="element.position.marginTop"
                                      [style.margin-bottom.px]="element.position.marginBottom"
-                                     [style.grid-column-start]="element.position.gridColumnStart"
-                                     [style.grid-column-end]="element.position.gridColumnEnd"
-                                     [style.grid-row-start]="element.position.gridRowStart"
-                                     [style.grid-row-end]="element.position.gridRowEnd"
+                                     [style.grid-column-start]="element.position.gridColumn"
+                                     [style.grid-column-end]="element.position.gridColumn + element.position.gridColumnRange"
+                                     [style.grid-row-start]="element.position.gridRow"
+                                     [style.grid-row-end]="element.position.gridRow + element.position.gridRowRange"
                                      cdkDropList cdkDropListSortingDisabled
                                      [cdkDropListData]="{ sectionIndex: sectionIndex }"
                                      [cdkDropListConnectedTo]="dropListList"
                                      [style.position]="'relative'"
                                      [style.pointer-events]="dragging ? 'none' : 'auto'"
                                      appElementGridChangeListener
-                                     [gridColumnStart]="element.position.gridColumnStart"
-                                     [gridColumnEnd]="element.position.gridColumnEnd"
-                                     [gridRowStart]="element.position.gridRowStart"
-                                     [gridRowEnd]="element.position.gridRowEnd"
+                                     [gridColumn]="element.position.gridColumn"
+                                     [gridColumnRange]="element.position.gridColumnRange"
+                                     [gridRow]="element.position.gridRow"
+                                     [gridRowRange]="element.position.gridRowRange"
                                      (dragStart)="dragging = true"
                                      (dragEnd)="dragging = false"
                                      (elementChanged)="helperGrid?.refresh()">
diff --git a/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/element-position-properties.component.ts b/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/element-position-properties.component.ts
index 786f47b9a554f2ffadbaea9fd69ffc5b1185a859..54a517b7a7563d631aed63326c98263969c67ec0 100644
--- a/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/element-position-properties.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/element-position-properties.component.ts
@@ -47,7 +47,7 @@ export class ElementPositionPropertiesComponent {
   @Input() dimensions!: { width: number; height: number; };
   @Input() positionProperties!: PositionProperties;
   @Output() updateModel =
-  new EventEmitter<{ property: string; value: string | boolean, isInputValid?: boolean | null }>();
+  new EventEmitter<{ property: string; value: string | number | boolean, isInputValid?: boolean | null }>();
 
   constructor(private unitService: UnitService, public selectionService: SelectionService) { }
 
diff --git a/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/input-groups/position-field-set.component.ts b/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/input-groups/position-field-set.component.ts
index 0bad4861737d04bd37a2fc55f4346384e8afbe6b..3e0bf6af753357dff77686dbf28d247f04193672 100644
--- a/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/input-groups/position-field-set.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/properties-panel/position-properties-tab/input-groups/position-field-set.component.ts
@@ -30,30 +30,29 @@ import { PositionProperties } from '../../../../../../../../../common/interfaces
       <ng-template #elseBlock>
         {{'propertiesPanel.grid' | translate }}
         <div class="input-group">
-          <div fxLayoutAlign="row">
-            <mat-form-field class="small-input">
-              <mat-label>{{'propertiesPanel.startColumn' | translate }}</mat-label>
-              <input matInput type="number" [ngModel]="positionProperties.gridColumnStart"
-                     (ngModelChange)="updateModel.emit({ property: 'gridColumnStart', value: $event })">
-            </mat-form-field>
-            <mat-form-field class="small-input">
-              <mat-label>{{'propertiesPanel.endColumn' | translate }}</mat-label>
-              <input matInput type="number" [ngModel]="positionProperties.gridColumnEnd"
-                     (ngModelChange)="updateModel.emit({ property: 'gridColumnEnd', value: $event })">
-            </mat-form-field>
-          </div>
-          <div fxLayoutAlign="row">
-            <mat-form-field class="small-input">
-              <mat-label>{{'propertiesPanel.startRow' | translate }}</mat-label>
-              <input matInput type="number" [ngModel]="positionProperties.gridRowStart"
-                     (ngModelChange)="updateModel.emit({ property: 'gridRowStart', value: $event })">
-            </mat-form-field>
-            <mat-form-field class="small-input">
-              <mat-label>{{'propertiesPanel.endRow' | translate }}</mat-label>
-              <input matInput type="number" [ngModel]="positionProperties.gridRowEnd"
-                     (ngModelChange)="updateModel.emit({ property: 'gridRowEnd', value: $event })">
-            </mat-form-field>
-          </div>
+          <mat-form-field>
+            <mat-label>{{'propertiesPanel.column' | translate }}</mat-label>
+            <input matInput type="number" [ngModel]="positionProperties.gridColumn"
+                   (ngModelChange)="updateModel.emit({ property: 'gridColumn', value: $event })">
+          </mat-form-field>
+          <mat-form-field>
+            <mat-label>{{'propertiesPanel.row' | translate }}</mat-label>
+            <input matInput type="number" [ngModel]="positionProperties.gridRow"
+                   (ngModelChange)="updateModel.emit({ property: 'gridRow', value: $event })">
+          </mat-form-field>
+
+          <mat-form-field>
+            <mat-label>{{'propertiesPanel.columnRange' | translate }}</mat-label>
+            <input matInput type="number"
+                   [ngModel]="positionProperties.gridColumnRange"
+                   (ngModelChange)="updateModel.emit({ property: 'gridColumnRange', value: $event })">
+          </mat-form-field>
+          <mat-form-field>
+            <mat-label>{{'propertiesPanel.rowRange' | translate }}</mat-label>
+            <input matInput type="number"
+                   [ngModel]="positionProperties.gridRowRange"
+                   (ngModelChange)="updateModel.emit({ property: 'gridRowRange', value: $event })">
+          </mat-form-field>
         </div>
 
         {{'propertiesPanel.margin' | translate }}
@@ -70,8 +69,11 @@ import { PositionProperties } from '../../../../../../../../../common/interfaces
               <mat-label>{{'propertiesPanel.left' | translate }}</mat-label>
               <input matInput type="number" #marginLeft="ngModel"
                      [ngModel]="positionProperties.marginLeft"
-                     (ngModelChange)="updateModel.emit(
-                            { property: 'marginLeft', value: $event, isInputValid: marginLeft.valid && $event !== null })">
+                     (ngModelChange)="updateModel.emit({
+                       property: 'marginLeft',
+                       value: $event,
+                       isInputValid: marginLeft.valid && $event !== null
+                     })">
             </mat-form-field>
             <mat-form-field class="right-form-field small-input">
               <mat-label>{{'propertiesPanel.right' | translate }}</mat-label>
@@ -119,5 +121,5 @@ import { PositionProperties } from '../../../../../../../../../common/interfaces
 export class PositionFieldSetComponent {
   @Input() positionProperties!: PositionProperties;
   @Output() updateModel =
-  new EventEmitter<{ property: string; value: string | boolean, isInputValid?: boolean | null }>();
+  new EventEmitter<{ property: string; value: string | number | boolean, isInputValid?: boolean | null }>();
 }
diff --git a/projects/editor/src/app/services/unit.service.ts b/projects/editor/src/app/services/unit.service.ts
index 381cbad8ded818b202cebd23aa629303d5eaeb74..75befb2a4a28b71da105875884f8554dc8cb7a74 100644
--- a/projects/editor/src/app/services/unit.service.ts
+++ b/projects/editor/src/app/services/unit.service.ts
@@ -139,10 +139,10 @@ export class UnitService {
       } as unknown as UIElement) as PositionedElement;
     }
     if (coordinates && section.dynamicPositioning) {
-      newElement.position.gridColumnStart = coordinates.x;
-      newElement.position.gridColumnEnd = coordinates.x + 1;
-      newElement.position.gridRowStart = coordinates.y;
-      newElement.position.gridRowEnd = coordinates.y + 1;
+      newElement.position.gridColumn = coordinates.x;
+      newElement.position.gridColumnRange = 1;
+      newElement.position.gridRow = coordinates.y;
+      newElement.position.gridRowRange = 1;
     } else if (coordinates && !section.dynamicPositioning) {
       newElement.position.xPosition = coordinates.x;
       newElement.position.yPosition = coordinates.y;
@@ -256,8 +256,8 @@ export class UnitService {
             row.readOnly = value as boolean;
           });
         }
-      } else if (['fixedSize', 'dynamicPositioning', 'xPosition', 'yPosition', 'useMinHeight', 'gridColumnStart',
-        'gridColumnEnd', 'gridRowStart', 'gridRowEnd', 'marginLeft', 'marginRight', 'marginTop',
+      } else if (['fixedSize', 'dynamicPositioning', 'xPosition', 'yPosition', 'useMinHeight', 'gridColumn',
+        'gridColumnRange', 'gridRow', 'gridRowRange', 'marginLeft', 'marginRight', 'marginTop',
         'marginBottom', 'zIndex'].includes(property)) {
         element.position![property] = Copy.getCopy(value);
       } else if (['fontColor', 'font', 'fontSize', 'lineHeight', 'bold', 'italic', 'underline',
diff --git a/projects/editor/src/assets/i18n/de.json b/projects/editor/src/assets/i18n/de.json
index 0bf327a453e612cee54154e46775caf6d125ec43..00fbf0ff861ac2dc39109609f429ea0d175bfcb1 100644
--- a/projects/editor/src/assets/i18n/de.json
+++ b/projects/editor/src/assets/i18n/de.json
@@ -55,10 +55,10 @@
     "useMinHeight": "Mindesthöhe setzen",
     "minHeight": "Mindesthöhe",
     "grid": "Raster",
-    "startColumn": "Start-Spalte",
-    "endColumn": "End-Spalte",
-    "startRow": "Start-Zeile",
-    "endRow": "End-Zeile",
+    "column": "Spalte",
+    "row": "Zeile",
+    "columnRange": "Spaltenspanne",
+    "rowRange": "Zeilenspanne",
     "margin": "Abstand",
     "top": "oben",
     "left": "links",
@@ -79,10 +79,6 @@
     "requiredField": "Pflichtfeld",
     "requiredWarnMessage": "Warnmeldung",
     "options": "Optionen",
-    "vertical": "vertikal",
-    "column": "vertikal",
-    "horizontal": "horizontal",
-    "row": "horizontal",
     "resizeEnabled": "größenverstellbar",
     "action": "Aktion",
     "actionParam": "Aktionsparameter",