diff --git a/example/src/App.vue b/example/src/App.vue
index 075a7b09608912cc517618eb9a4f1cecffb6e806..6421f1dac7aa39a787e03f813ee97b58b715abea 100644
--- a/example/src/App.vue
+++ b/example/src/App.vue
@@ -2,6 +2,7 @@
 import DragGrid from "../../src/DragGrid.vue";
 import CircularCard from "./components/CircularCard.vue";
 import NumberCounter from "./components/NumberCounter.vue";
+import Example1Generic from "./Example1Generic.vue";
 </script>
 
 <template>
@@ -12,20 +13,7 @@ import NumberCounter from "./components/NumberCounter.vue";
       Grid with two programmatically blocked cells and one programmatically
       blocked item
     </p>
-    <DragGrid
-      :rows="8"
-      :cols="5"
-      :pos-validation="blockField"
-      v-model="items"
-      class="bordered"
-    >
-      <div id="blocker">
-        This field is blocked because it's filled, the next one programmatically
-      </div>
-      <template #item="item">
-        <div class="container">{{ item }}</div>
-      </template>
-    </DragGrid>
+    <example1-generic></example1-generic>
 
     <h2>Example 2: "Tic-Tac-Toe"</h2>
     <p>
@@ -311,12 +299,6 @@ import NumberCounter from "./components/NumberCounter.vue";
 export default {
   name: "App",
   methods: {
-    blockField(x, y, key) {
-      // We won't move fields with ID 'obj8' and nothing into (3, 3) and (4, 3)
-      if (x === 3 && y === 3) return false;
-      if (x === 4 && y === 3) return false;
-      return key !== "obj8";
-    },
     blockAllMoving() {
       return false;
     },
@@ -395,24 +377,6 @@ export default {
   },
   data() {
     return {
-      items: [
-        { x: 1, y: 3, w: 1, h: 1, key: "obj1", data: {} },
-        { x: 2, y: 1, w: 1, h: 1, key: "obj2", data: {} },
-        { x: 3, y: 1, w: 2, h: 2, key: "obj3", data: {} },
-        { x: 5, y: 2, w: 1, h: 1, key: "obj4", data: {} },
-        { x: 1, y: 1, w: 1, h: 2, key: "obj5", data: {} },
-        { x: 5, y: 1, w: 1, h: 1, key: "obj6", data: {} },
-        { x: 2, y: 2, w: 1, h: 3, key: "obj7", data: {} },
-        {
-          x: 1,
-          y: 4,
-          w: 1,
-          h: 1,
-          key: "obj8",
-          data: { title: "I'm blocked from moving!" },
-        },
-        { x: 5, y: 3, w: 1, h: 1, key: "obj9", data: {} },
-      ],
       ticTacToe1: [
         { x: 1, y: 1, w: 1, h: 1, key: "a1", data: { text: "X" } },
         { x: 3, y: 3, w: 1, h: 1, key: "b1", data: { text: "O" } },
@@ -612,26 +576,6 @@ export default {
 </script>
 
 <style scoped>
-#blocker {
-  grid-row: 3 / span 1;
-  grid-column: 3 / span 1;
-  background-image: linear-gradient(
-    45deg,
-    #edd85f 25%,
-    #0f2b3d 25%,
-    #0f2b3d 50%,
-    #edd85f 50%,
-    #edd85f 75%,
-    #0f2b3d 75%,
-    #0f2b3d 100%
-  );
-  background-size: 56.57px 56.57px;
-  color: white;
-  font-size: large;
-  font-weight: bold;
-  text-shadow: 4px 4px 4px #2c3e50;
-}
-
 .container {
   background: lightcoral;
   width: 100%;
diff --git a/example/src/Example1Generic.vue b/example/src/Example1Generic.vue
new file mode 100644
index 0000000000000000000000000000000000000000..839435e9fdf1bc649dc444f8e52a505ed2818717
--- /dev/null
+++ b/example/src/Example1Generic.vue
@@ -0,0 +1,88 @@
+<script setup>
+import DragGrid from "../../src/DragGrid.vue";
+</script>
+
+<template>
+  <DragGrid
+    :rows="8"
+    :cols="5"
+    :pos-validation="blockField"
+    v-model="items"
+    class="bordered"
+  >
+    <div id="blocker">
+      This field is blocked and it's filled, the next one only programmatically
+    </div>
+    <template #item="item">
+      <div class="container">{{ item }}</div>
+    </template>
+  </DragGrid>
+</template>
+
+<script>
+export default {
+  name: "Example1Generic",
+  methods: {
+    blockField(x, y, key) {
+      // We won't move fields with ID 'obj8' and nothing into (3, 3) and (4, 3)
+      if (x === 3 && y === 3) return false;
+      if (x === 4 && y === 3) return false;
+      return key !== "obj8";
+    },
+  },
+  data() {
+    return {
+      items: [
+        { x: 1, y: 3, w: 1, h: 1, key: "obj1", data: {} },
+        { x: 2, y: 1, w: 1, h: 1, key: "obj2", data: {} },
+        { x: 3, y: 1, w: 2, h: 2, key: "obj3", data: {} },
+        { x: 5, y: 2, w: 1, h: 1, key: "obj4", data: {} },
+        { x: 1, y: 1, w: 1, h: 2, key: "obj5", data: {} },
+        { x: 5, y: 1, w: 1, h: 1, key: "obj6", data: {} },
+        { x: 2, y: 2, w: 1, h: 3, key: "obj7", data: {} },
+        {
+          x: 1,
+          y: 4,
+          w: 1,
+          h: 1,
+          key: "obj8",
+          data: { title: "I'm blocked from moving!" },
+        },
+        { x: 5, y: 3, w: 1, h: 1, key: "obj9", data: {} },
+      ],
+    };
+  },
+};
+</script>
+
+<style scoped>
+#blocker {
+  grid-row: 3 / span 1;
+  grid-column: 3 / span 1;
+  background-image: linear-gradient(
+    45deg,
+    #edd85f 25%,
+    #0f2b3d 25%,
+    #0f2b3d 50%,
+    #edd85f 50%,
+    #edd85f 75%,
+    #0f2b3d 75%,
+    #0f2b3d 100%
+  );
+  background-size: 56.57px 56.57px;
+  color: white;
+  font-size: large;
+  font-weight: bold;
+  text-shadow: 4px 4px 4px #2c3e50;
+}
+
+.container {
+  background: lightcoral;
+  width: 100%;
+  height: 100%;
+}
+
+.bordered {
+  border: 2px solid grey;
+}
+</style>