diff --git a/Documentation/bluetooth/card10.rst b/Documentation/bluetooth/card10.rst
index d41fa01b971e3fc7955fcced689d942a93417b1c..5242664bcc2dded392c7d81b6d759526d719524c 100644
--- a/Documentation/bluetooth/card10.rst
+++ b/Documentation/bluetooth/card10.rst
@@ -15,10 +15,10 @@ The current draft uses following service specification:
 
   UUID: ``42230200-2342-2342-2342-234223422342``
 
-- light sensor characteristic:
+- Time update characteristic:
 
-  UUID: ``422302f0-2342-2342-2342-234223422342``
-  read
+  UUID: ``42230201-2342-2342-2342-234223422342``
+  write
 
 - Vibra characteristic:
 
@@ -30,20 +30,19 @@ The current draft uses following service specification:
   UUID: ``42230210-2342-2342-2342-234223422342``
   write
 
-- Time update characteristic:
+- Light sensor characteristic:
 
-  UUID: ``42230201-2342-2342-2342-234223422342``
-  write
+  UUID: ``422302f0-2342-2342-2342-234223422342``
+  read
 
-light sensor characteristic
+Time update characteristic
 ---------------------------------
 
-The light sensor characteristic makes it possible to read the current value of the light sensor by receiving a ``uint16``.
-The range of this sensor is between 0 (``0x0``) and 400 (``0x9001``).
+The time update characteristic makes it possible to set the current time given in milliseconds after 1.1.1970 in the UTC timezone. The value is represented as a big endian ``uint64``
 
-- reading of ``0x0e00`` means **14**
+- Thu Aug 15 19:40:45 UTC 2019 : ``0x0 0x0 0x1 0x6c 0x96 0xcb 0xf8 0xcc``
 
-vibra characteristic
+Vibra characteristic
 ---------------------------------
 
 The vibra characteristic makes it possible to let the card10 for given millisecound in a ``uint16`` vibrate.
@@ -67,9 +66,10 @@ Rocket0 Rocket1 Rocket2
 - Enable only Rocket0:  ``0xff0000``
 - Enable all rockets with 50% brightness: ``0x7f7f7f``
 
-time update characteristic
+Light sensor characteristic
 ---------------------------------
 
-The time update characteristic makes it possible to set the current time given in milliseconds after 1.1.1970 in the UTC timezone. The value is represented as a big endian ``uint64``
+The light sensor characteristic makes it possible to read the current value of the light sensor by receiving a ``uint16``.
+The range of this sensor is between 0 (``0x0``) and 400 (``0x9001``).
 
-- Thu Aug 15 19:40:45 UTC 2019 : ``0x0 0x0 0x1 0x6c 0x96 0xcb 0xf8 0xcc``
+- reading of ``0x0e00`` means **14**
diff --git a/epicardium/ble/card10.c b/epicardium/ble/card10.c
index 4ad535c147209d3e79187605858627aed82ea0c4..3834d2bcddce3ea1415a95681f9c2297c1802d1e 100644
--- a/epicardium/ble/card10.c
+++ b/epicardium/ble/card10.c
@@ -38,6 +38,9 @@
 enum {
 	/*!< \brief card10 service declaration */
 	CARD10_SVC_HDL = CARD10_START_HDL,
+	/*!< \brief time update characteristic */
+	CARD10_TIME_UPDATE_CH_HDL,
+	CARD10_TIME_UPDATE_VAL_HDL,
 	/*!< \brief vibra characteristic */
 	CARD10_VIRBA_CH_HDL,
 	CARD10_VIBRA_VAL_HDL,
@@ -47,9 +50,6 @@ enum {
 	/*!< \brief light sensor characteristic */
 	CARD10_LIGHT_SENSOR_CH_HDL,
 	CARD10_LIGHT_SENSOR_VAL_HDL,
-	/*!< \brief time update characteristic */
-	CARD10_TIME_UPDATE_CH_HDL,
-	CARD10_TIME_UPDATE_VAL_HDL,
 	/*!< \brief Maximum handle. */
 	CARD10_MAX_HDL
 };
@@ -59,17 +59,34 @@ enum {
 /* BLE UUID for card10 service*/
 static const uint8_t UUID_svc[] = { CARD10_UUID_SUFFIX, 0x0, CARD10_UUID_PREFIX };
 
+
+// starting at 0x01 with write (non visual) charateristics
+
+/* BLE UUID for card10 time update */
+static const uint8_t UUID_char_time[] = {
+	ATT_PROP_WRITE,
+	UINT16_TO_BYTES(CARD10_TIME_UPDATE_VAL_HDL),
+	CARD10_UUID_SUFFIX, 0x01, CARD10_UUID_PREFIX
+};
+
+static const uint8_t UUID_attChar_time[] = {
+	CARD10_UUID_SUFFIX, 0x01, CARD10_UUID_PREFIX
+};
+
 /* BLE UUID for card10 char vibra */
 static const uint8_t UUID_char_vibra[] = {
 	ATT_PROP_WRITE_NO_RSP,
 	UINT16_TO_BYTES(CARD10_VIBRA_VAL_HDL),
-	CARD10_UUID_SUFFIX, 0xf, CARD10_UUID_PREFIX
+	CARD10_UUID_SUFFIX, 0x0f, CARD10_UUID_PREFIX
 };
 
 static const uint8_t UUID_attChar_vibra[] = {
-	CARD10_UUID_SUFFIX, 0xf, CARD10_UUID_PREFIX
+	CARD10_UUID_SUFFIX, 0x0f, CARD10_UUID_PREFIX
 };
 
+
+// starting at 0x10 with write of leds (visual output)
+
 /* BLE UUID for card10 char rockets */
 static const uint8_t UUID_char_rockets[] = {
 	ATT_PROP_WRITE_NO_RSP,
@@ -81,6 +98,8 @@ static const uint8_t UUID_attChar_rockets[] = {
 	CARD10_UUID_SUFFIX, 0x10, CARD10_UUID_PREFIX
 };
 
+// starting at 0xf0 with read only characteristics
+
 /* BLE UUID for card10 char light sensor */
 static const uint8_t UUID_char_light_sensor[] = {
 	ATT_PROP_READ,
@@ -90,17 +109,6 @@ static const uint8_t UUID_char_light_sensor[] = {
 static const uint8_t UUID_attChar_light_sensor[] = {
 	CARD10_UUID_SUFFIX, 0xf0, CARD10_UUID_PREFIX
 };
-
-/* BLE UUID for card10 time update */
-static const uint8_t UUID_char_time[] = {
-	ATT_PROP_WRITE,
-	UINT16_TO_BYTES(CARD10_TIME_UPDATE_VAL_HDL),
-	CARD10_UUID_SUFFIX, 0x01, CARD10_UUID_PREFIX
-};
-
-static const uint8_t UUID_attChar_time[] = {
-	CARD10_UUID_SUFFIX, 0x01, CARD10_UUID_PREFIX
-};
 /* clang-format on */
 
 /*
@@ -125,6 +133,27 @@ static void *addCard10GroupDyn(void)
 			ATTS_PERMIT_READ
 		);
 
+		// TIME UPDTAE
+
+		AttsDynAddAttrConst(
+			pSHdl,
+			attChUuid,
+			UUID_char_time,
+			sizeof(UUID_char_time),
+			0,
+			ATTS_PERMIT_READ
+		);
+
+		AttsDynAddAttr(
+			pSHdl,
+			UUID_attChar_time,
+			NULL,
+			0,
+			sizeof(uint64_t),
+			ATTS_SET_WRITE_CBACK,
+			ATTS_PERMIT_WRITE
+		);
+
 		// VIBRA
 
 		AttsDynAddAttrConst(
@@ -188,27 +217,6 @@ static void *addCard10GroupDyn(void)
 			ATTS_PERMIT_READ
 		);
 
-		// TIME UPDTAE
-
-		AttsDynAddAttrConst(
-			pSHdl,
-			attChUuid,
-			UUID_char_time,
-			sizeof(UUID_char_time),
-			0,
-			ATTS_PERMIT_READ
-		);
-
-		AttsDynAddAttr(
-			pSHdl,
-			UUID_attChar_time,
-			NULL,
-			0,
-			sizeof(uint64_t),
-			ATTS_SET_WRITE_CBACK,
-			ATTS_PERMIT_WRITE
-		);
-
 		APP_TRACE_INFO0("ble-card10: services bound\n");
 	}
 	return pSHdl;
@@ -249,6 +257,14 @@ static uint8_t writeCard10CB(
 	uint16_t ui16;
 
 	switch (handle) {
+	case CARD10_TIME_UPDATE_VAL_HDL:
+		if (operation == ATT_PDU_PREP_WRITE_REQ) {
+			if (len < sizeof(uint64_t)) {
+				return ATT_ERR_LENGTH;
+			}
+			return ATT_SUCCESS;
+		}
+		return setTime(pValue, len);
 	case CARD10_VIBRA_VAL_HDL:
 		BYTES_TO_UINT16(ui16, pValue);
 		epic_vibra_vibrate(ui16);
@@ -265,14 +281,6 @@ static uint8_t writeCard10CB(
 			pValue[2]
 		);
 		return ATT_SUCCESS;
-	case CARD10_TIME_UPDATE_VAL_HDL:
-		if (operation == ATT_PDU_PREP_WRITE_REQ) {
-			if (len < sizeof(uint64_t)) {
-				return ATT_ERR_LENGTH;
-			}
-			return ATT_SUCCESS;
-		}
-		return setTime(pValue, len);
 	default:
 		APP_TRACE_INFO1(
 			"ble-card10: unsupported characteristic: %c\n", handle