diff -ur cleverreach/src/Form/CleverreachBlockForm.php cleverreach_new/src/Form/CleverreachBlockForm.php
--- cleverreach/src/Form/CleverreachBlockForm.php	2016-07-04 20:27:49.000000000 +0200
+++ cleverreach_new/src/Form/CleverreachBlockForm.php	2017-08-11 16:12:11.490416997 +0200
@@ -106,6 +106,8 @@
       $field['#type'] = 'textfield';
     }

+    $field['#weight'] = isset($field_data['weight']) ? $field_data['weight'] : 0;
+
     return $field;
   }

diff -ur cleverreach/src/Form/CleverreachEditBlockForm.php cleverreach_new/src/Form/CleverreachEditBlockForm.php
--- cleverreach/src/Form/CleverreachEditBlockForm.php	2017-08-11 16:06:51.673418501 +0200
+++ cleverreach_new/src/Form/CleverreachEditBlockForm.php	2017-08-11 16:10:06.755587948 +0200
@@ -46,6 +46,13 @@
     $fields = unserialize($data["fields"]);
     $display_option_values = array();

+    $weights = [];
+    foreach ((array)$fields as $field) {
+    	if (isset($field["weight"])) {
+          $weights[$field["name"]]=$field["weight"];
+      }
+    }
+
     foreach ($results as $result) {
       $options[$result->crgid] = $result->name;
     }
@@ -76,6 +83,18 @@

       if ($gid != NULL) {
         $attributes = $this->database->query('SELECT grps.attributes FROM {cleverreach_groups} grps WHERE grps.crgid = :crgid', array(':crgid' => $gid))->fetchField();
+      	$attributes = unserialize($attributes);
+
+      	usort($attributes,
+      		function ($a, $b) use($weights) {
+      			$akey=$a["key"];
+      			$bkey=$b["key"];
+            if (isset($weights[$akey]) &&  isset($weights[$bkey])) {
+              return $weights[$akey]-$weights[$bkey];
+            }
+            return 0;
+      		}
+      	);

         $headers = array(
           '',
@@ -85,24 +104,34 @@
           t('Variable'),
           t('Required'),
           t('Display'),
+	  t('Weight'),
         );
-
+
         $form['cr_grp_wrapper']['table'] = array(
           '#type' => 'table',
           '#caption' => t('Select fields'),
           '#header' => $headers,
+	  '#tabledrag' => array(
+	      array(
+        	'action' => 'order',
+	        'relationship' => 'sibling',
+	        'group' => 'draggable-weight',
+	      ),
+	    ),
         );

-        foreach (unserialize($attributes) as $value) {
+        foreach ($attributes as $value) {
           $display_options = '';
           $selected = 0;
           $required = 0;
           $label = '';

+	  $form['cr_grp_wrapper']['table'][$value["key"]]['#attributes']['class'][] = 'draggable';
+
           foreach ($fields as $valued) {

             if ($value["key"] == $valued["name"]) {
-
+
               $label = $valued["label"];

               if ($valued["active"] == 1) {
@@ -241,6 +270,12 @@
             );
           }

+ 	  $form['cr_grp_wrapper']['table'][$value["key"]]['weight'] = array(
+	    '#type' => 'weight',
+            '#default_value' => isset($weights[$value["key"]]) ? $weights[$value["key"]] : 0,
+	    '#attributes' => array('class' => array('draggable-weight')),
+	  );
+
         }

       }
@@ -283,6 +318,7 @@
         'display_options' => $value["display"]["display_options"],
         'active' => $value["select"],
         'label' => $value["label"],
+        'weight' => $value["weight"],
       );
     }

