diff --git a/app/src/components/CardsLayer.vue b/app/src/components/CardsLayer.vue
index 32d3da51d0edb78131143900a35768fad3b0d6ab..c6602c2254b792af7994f3428e427cd5c4b43709 100644
--- a/app/src/components/CardsLayer.vue
+++ b/app/src/components/CardsLayer.vue
@@ -1,6 +1,7 @@
 <template>
-  <div class="grid">
+  <div>
     <draggable
+      id="dragger"
       class="grid"
       name="grid"
       @start="drag = true"
@@ -196,6 +197,7 @@ export default {
       update: false,
       input: '',
       search: '',
+      orders: this.configPositions,
     }
   },
 
@@ -258,31 +260,25 @@ export default {
   },
 
   methods: {
-    save() {
-      this.$options.myArray.forEach((node, key) => {
-        console.log('key' + key, ':' + node.node_text)
-      })
-    },
-    nodePositionIndex(e) {
-      // var items = this.configPositions.map((node_sort, index) => {
-      //   console.log(items)
-      //   console.log(node_sort)
-      //   console.log(index)
-      // })
-      // this.$options.myArray.forEach((node, key) => {
-      //   console.log(node.node_text, key)
-      // })
-      // var items = this.items.map(function (item, index) {
-      //   console.log(items)
-      //   return { item: item, order: index }
-      // })
-      // console.log(e)
-      // console.log(e.newIndex)
-      // this index is where came from
-      // console.log(e.oldIndex)
-      nodeid = e.item.firstChild.firstChild.id
-      nodesort = e.newIndex
-      this.$store.dispatch('sortNode', { nodeid, nodesort })
+    nodePositionIndex() {
+      var i
+      var j
+      var dragger = document.getElementById('dragger')
+
+      for (i = 0; i < dragger.childNodes.length; i++) {
+        var count = i
+
+        for (j = 0; j < Object.keys(this.configPositions).length; j++) {
+          if (
+            dragger.childNodes[i].firstChild[0].id ==
+            this.configPositions[j].node_id
+          ) {
+            nodeid = this.configPositions[j].node_id
+            nodesort = count
+            this.$store.dispatch('sortNode', { nodeid, nodesort })
+          }
+        }
+      }
     },
     chooseColor(color, nodeid) {
       this.$store.dispatch('colorNode', { nodeid, color })
@@ -308,7 +304,6 @@ export default {
     },
     loadData() {
       this.$options.myArray = this.nodes_filtered
-
       this.$forceUpdate()
     },
     editNode(e) {
diff --git a/app/src/components/ListLayer.vue b/app/src/components/ListLayer.vue
index 6ee0540ac666b8b3ffa3d8a407993a5251c1d6e1..342d24856ce91c30dc6da9fa0746059655772742 100644
--- a/app/src/components/ListLayer.vue
+++ b/app/src/components/ListLayer.vue
@@ -1,7 +1,12 @@
 <template>
   <div>
     <div v-for="(nodes, index) in $options.myArray" v-bind:key="index">
-      <form class="nodes">
+      <form
+        class="nodes"
+        :style="{
+          backgroundColor: nodes.color,
+        }"
+      >
         <template v-if="nodes.read_mode == false">
           <textarea
             @focus="editTrue(true)"
@@ -32,6 +37,17 @@
               readFlag(nodes.node_id, nodes.read_mode), updateNodes()
             "
           />
+          <v-swatches
+            v-model="color"
+            @input="chooseColor(color, nodes.node_id)"
+            :swatches="swatches"
+            :shapes="shapes"
+            show-border
+            show-fallback
+            fallback-input-type="color"
+          >
+            <SvgButton3 buttonClass="nodes" @click.prevent slot="trigger" />
+          </v-swatches>
         </div>
 
         <div class="allemoji">
@@ -55,6 +71,9 @@ import { mapState } from 'vuex'
 import marked from 'marked'
 import SvgButton from '@/components/SvgButton'
 import SvgButton2 from '@/components/SvgButton2'
+import SvgButton3 from '@/components/SvgButton3'
+import VSwatches from 'vue-swatches'
+import 'vue-swatches/dist/vue-swatches.css'
 
 var readmode
 export default {
@@ -66,6 +85,15 @@ export default {
 
   data: function () {
     return {
+      color: '#9bc2d8',
+      shapes: 'circles',
+      // swatches: [{ color: '#F493A7', showBorder: true }],
+      swatches: [
+        ['#EB5757', '#F2994A', '#F2C94C'],
+        ['#219653', '#27AE60', '#6FCF97'],
+        ['#2F80ED', '#2D9CDB', '#56CCF2'],
+        ['#9B51E0', '#BB6BD9', '#E9B7FC'],
+      ],
       localreadmode: false,
       myArray: null,
       update: false,
@@ -125,6 +153,10 @@ export default {
   },
 
   methods: {
+    chooseColor(color, nodeid) {
+      this.$store.dispatch('colorNode', { nodeid, color })
+      this.$options.myArray = this.nodes_filtered
+    },
     updateNodes() {
       this.update = !this.update
     },
@@ -164,6 +196,8 @@ export default {
   components: {
     SvgButton,
     SvgButton2,
+    SvgButton3,
+    VSwatches,
   },
 }
 </script>
diff --git a/app/src/components/NodesLayer.vue b/app/src/components/NodesLayer.vue
index ff13bf6ee5a2304c756174991f1e9a55fbf1999b..4b3abc3d45bea7306d07d2189d0d7d125ec866f8 100644
--- a/app/src/components/NodesLayer.vue
+++ b/app/src/components/NodesLayer.vue
@@ -230,7 +230,6 @@ export default {
     ...mapState({
       scale: (state) => state.ui.scale,
       myNodes: (state) => state.myNodes,
-
       configPositions: (state) => state.configPositions,
       configConnections: (state) => state.configConnections,
       configEmoji: (state) => state.configEmoji,
diff --git a/app/src/views/Collect.vue b/app/src/views/Collect.vue
index 08ba13c9732fbf39b3ad29f3fc53a52878923b8d..b4cb5503ee3b239f100b16fed143c1c2252c4183 100644
--- a/app/src/views/Collect.vue
+++ b/app/src/views/Collect.vue
@@ -116,6 +116,7 @@ export default {
     addNode() {
       this.$store.dispatch('addNode')
       this.added = !this.added
+      this.$forceUpdate()
     },
 
     editTrue(e) {