diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 25b4a46a9610bd1c4c91c73fe6bdf6308c27f084..77d9e82d20f71a321fe4a995ae03b69ab65b9ef3 100644
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -1619,7 +1619,7 @@ void fill_rx_indication(PHY_VARS_eNB *eNB,int UE_id,int frame,int subframe) {
 
 //-----------------------------------------------------------------------------
 /*
- * Release the harq if its round is >= 'after_rounds'
+ * Release the harq process if its round is >= 'after_rounds'
  */
 static void do_release_harq(PHY_VARS_eNB *eNB,
                             int UE_id,
@@ -1683,26 +1683,6 @@ static void do_release_harq(PHY_VARS_eNB *eNB,
     }
 #endif
 
-    /*
-    LOG_I(PHY, "UE_id = %d; Frame %d, subframe %d: Releasing harq %d for UE %x, CC_id = %d; HARQ RTT Timer = %d,%d,%d,%d,%d,%d,%d,%d, drx-ReTX = %d, cdrx-configured = %d\n",
-          UE_id_mac,
-          frame,
-          subframe,
-          harq_pid,
-          dlsch0->rnti,
-          eNB->CC_id,
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][0],
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][1],
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][2],
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][3],
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][4],
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][5],
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][6],
-          UE_scheduling_control->harq_rtt_timer[eNB->CC_id][7],
-          UE_scheduling_control->drx_retransmission_timer[harq_pid],
-          UE_scheduling_control->cdrx_configured);
-    */
-
     if (dlsch0_harq->round >= after_rounds) {
       dlsch0_harq->status = SCH_IDLE;
       dlsch0->harq_mask &= ~(1 << harq_pid);
@@ -1766,7 +1746,8 @@ static void do_release_harq(PHY_VARS_eNB *eNB,
 }
 
 static void release_harq(PHY_VARS_eNB *eNB,int UE_id,int tb,uint16_t frame,uint8_t subframe,uint16_t mask, int is_ack) {
-  /* Maximum number of DL transmissions = 4.
+  /* 
+   * Maximum number of DL transmissions = 4.
    * TODO: get the value from configuration.
    * If is_ack is true then we release immediately. The value -1 can be used for that.
    */
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
index 59d4b3f15735132d354d2bc26aced9965c1f07ce..b5ef7bb7516288032c71cc8a0f526f9dae646701 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
@@ -457,6 +457,9 @@ void  getRepetition(UE_TEMPLATE * pue_template,unsigned int *maxRep , unsigned i
 }
 
 //------------------------------------------------------------------------------
+/*
+* Schedule the DLSCH
+*/
 void
 schedule_ue_spec(module_id_t module_idP,
                  int slice_idxP,
@@ -564,14 +567,13 @@ schedule_ue_spec(module_id_t module_idP,
     }
   }
 
-  //weight = get_ue_weight(module_idP,UE_id);
   aggregation = 2;
 
   for (CC_id = 0, eNB_stats = &eNB->eNB_stats[0]; CC_id < nb_mac_CC; CC_id++, eNB_stats++) {
     dl_Bandwidth = cc[CC_id].mib->message.dl_Bandwidth;
     N_RB_DL[CC_id] = to_prb(dl_Bandwidth);
-    min_rb_unit[CC_id] = get_min_rb_unit(module_idP,
-                                         CC_id);
+    min_rb_unit[CC_id] = get_min_rb_unit(module_idP, CC_id);
+
     // get number of PRBs less those used by common channels
     total_nb_available_rb[CC_id] = N_RB_DL[CC_id];
 
@@ -603,14 +605,6 @@ schedule_ue_spec(module_id_t module_idP,
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR,
                                           VCD_FUNCTION_OUT);
 
-  //RC.mac[module_idP]->slice_info.slice_counter--;
-  // Do the multiplexing and actual allocation only when all slices have been pre-processed.
-  //if (RC.mac[module_idP]->slice_info.slice_counter > 0) {
-  //stop_meas(&eNB->schedule_dlsch);
-  //VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_SCHEDULE_DLSCH, VCD_FUNCTION_OUT);
-  //return;
-  //}
-
   if (RC.mac[module_idP]->slice_info.interslice_share_active) {
     dlsch_scheduler_interslice_multiplexing(module_idP,
                                             frameP,
@@ -776,7 +770,6 @@ schedule_ue_spec(module_id_t module_idP,
 
       /* Process retransmission  */
       if (round_DL != 8) {
-      //if (round_DL > 0) {
         // get freq_allocation
         nb_rb = ue_template->nb_rb[harq_pid];
         TBS = get_TBS_DL(ue_template->oldmcs1[harq_pid],
@@ -785,28 +778,12 @@ schedule_ue_spec(module_id_t module_idP,
         if (nb_rb <= nb_available_rb) {
           /* CDRX */
           ue_sched_ctrl->harq_rtt_timer[CC_id][harq_pid] = 1; // restart HARQ RTT timer
-          /*
-          LOG_W(MAC, "HELLO : round!=8 UE_id = %d, frame = %d; subframe = %d; CC_id %d, harq_pid = %d , RTT_timer = %d,%d,%d,%d,%d,%d,%d,%d\n",
-                UE_id,
-                frameP,
-                subframeP,
-                CC_id,
-                harq_pid,
-                ue_sched_ctrl->harq_rtt_timer[CC_id][0],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][1],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][2],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][3],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][4],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][5],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][6],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][7]);
-          */
 
           if (ue_sched_ctrl->cdrx_configured) {
             ue_sched_ctrl->drx_retransmission_timer[harq_pid] = 0; // stop drx retransmission
-            /* May be a problem with drx_retransmission_timer[harq_pid]. Here the timer is reset not stop.
-            * Can create a problem with several CC_id with the same UE??
-            */
+            /* 
+             * Note: contrary to the spec drx_retransmission_timer[harq_pid] is reset not stop.
+             */
             if (harq_pid == 0) {
               VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DRX_RETRANSMISSION_HARQ0, (unsigned long) ue_sched_ctrl->drx_retransmission_timer[0]);
             }
@@ -850,14 +827,6 @@ schedule_ue_spec(module_id_t module_idP,
           }
 
           nb_available_rb -= nb_rb;
-          /*
-          eNB->mu_mimo_mode[UE_id].pre_nb_available_rbs = nb_rb;
-          eNB->mu_mimo_mode[UE_id].dl_pow_off = ue_sched_ctrl->dl_pow_off[CC_id];
-
-          for(j = 0; j < N_RBG[CC_id]; ++j) {
-            eNB->mu_mimo_mode[UE_id].rballoc_sub[j] = ue_template->rballoc_subband[harq_pid][j];
-          }
-          */
 
           switch (get_tmode(module_idP, CC_id, UE_id)) {
             case 1:
@@ -1283,6 +1252,7 @@ schedule_ue_spec(module_id_t module_idP,
               header_length_total += header_length_last;
               num_sdus++;
               ue_sched_ctrl->uplane_inactivity_timer = 0;
+
               // reset RRC inactivity timer after uplane activity
               ue_contextP = rrc_eNB_get_ue_context(RC.rrc[module_idP], rnti);
 
@@ -1607,28 +1577,12 @@ schedule_ue_spec(module_id_t module_idP,
 
             /* CDRX */
             ue_sched_ctrl->harq_rtt_timer[CC_id][harq_pid] = 1; // restart HARQ RTT timer
-            /*
-            LOG_W(MAC, "HELLO : round=8, UE_id = %d, frame = %d; subframe = %d ; CC_id %d, harq_pid = %d , RTT_timer = %d,%d,%d,%d,%d,%d,%d,%d\n",
-                UE_id,
-                frameP,
-                subframeP,
-                CC_id,
-                harq_pid,
-                ue_sched_ctrl->harq_rtt_timer[CC_id][0],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][1],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][2],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][3],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][4],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][5],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][6],
-                ue_sched_ctrl->harq_rtt_timer[CC_id][7]);
-            */
 
             if (ue_sched_ctrl->cdrx_configured) {
               ue_sched_ctrl->drx_inactivity_timer = 1; // restart drx inactivity timer when new transmission
               ue_sched_ctrl->drx_retransmission_timer[harq_pid] = 0; // stop drx retransmission
-              /* May be a problem with drx_retransmission_timer[harq_pid]. Here the timer is reset not stop.
-               * Can create a problem with several CC_id with the same UE??
+              /* 
+               * Note: contrary to the spec drx_retransmission_timer[harq_pid] is reset not stop.
                */
               VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DRX_INACTIVITY, (unsigned long) ue_sched_ctrl->drx_inactivity_timer);
               if (harq_pid == 0) {
@@ -2050,13 +2004,6 @@ schedule_ue_spec_br(module_id_t module_idP,
       continue;
     }
 
-    /* CDRX LTE-M */
-    if (ue_sched_ctl->cdrx_configured == TRUE) {
-      if ((ue_sched_ctl->bypass_cdrx == FALSE) && (ue_sched_ctl->in_active_time == FALSE)) {
-        continue;
-      }
-    }
-
     round_DL = ue_sched_ctl->round[CC_id][harq_pid];
 
     AssertFatal (UE_template->physicalConfigDedicated != NULL, "UE_template->physicalConfigDedicated is null\n");
diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
index 52b5f7eff7f5629adbb6837f5d1a53642b404aad..6247400ceb18b036b762029c917d6da2408edbbf 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
@@ -235,8 +235,11 @@ rx_sdu(const module_id_t enb_mod_idP,
       if (UE_scheduling_control->cdrx_configured == TRUE) {
         /* Synchronous UL HARQ */
         UE_scheduling_control->ul_synchronous_harq_timer[CC_idP][harq_pid] = 5;
-        /* In case of asynchronous UL HARQ process restart here relevant RTT timer
-         * Stop corresponding CDRX ULRetransmission timer
+        /* 
+         * The NACK is programmed in n+4 subframes, so UE will have drxRetransmission running.
+         * Setting ul_synchronous_harq_timer = 5 will trigger drxRetransmission timer.
+         * Note: in case of asynchronous UL HARQ process restart here relevant RTT timer.
+         * Start corresponding CDRX ULRetransmission timer.
          */
       }
 
@@ -897,6 +900,7 @@ rx_sdu(const module_id_t enb_mod_idP,
 
               /* Reset RRC inactivity timer after uplane activity */
               ue_contextP = rrc_eNB_get_ue_context(RC.rrc[enb_mod_idP], current_rnti);
+
               if (ue_contextP != NULL) {
                 ue_contextP->ue_context.ue_rrc_inactivity_timer = 1;
               } else {
@@ -936,9 +940,12 @@ rx_sdu(const module_id_t enb_mod_idP,
     if (UE_scheduling_control->cdrx_configured == TRUE) {
       /* Synchronous UL HARQ */
       UE_scheduling_control->ul_synchronous_harq_timer[CC_idP][harq_pid] = 5;
-      /* Note: in case of asynchronous UL HARQ process restart here relevant RTT timer
-      * Stop corresponding CDRX ULRetransmission timer
-      */
+      /* 
+       * The ACK is programmed in n+4 subframes, so UE will have drxRetransmission running.
+       * Setting ul_synchronous_harq_timer = 5 will trigger drxRetransmission timer.
+       * Note: in case of asynchronous UL HARQ process restart here relevant RTT timer
+       * Stop corresponding CDRX ULRetransmission timer
+       */
     }
   }
 
@@ -1418,7 +1425,8 @@ schedule_ulsch_rnti(module_id_t   module_idP,
     UE_list->first_rb_offset[CC_id][slice_idx] = cmin(n_rb_ul_tab[CC_id], sli->ul[slice_idx].first_rb);
   }
 
-  /* ULSCH preprocessor: set UE_template->
+  /* 
+   * ULSCH preprocessor: set UE_template->
    * pre_allocated_nb_rb_ul[slice_idx]
    * pre_assigned_mcs_ul
    * pre_allocated_rb_table_index_ul
@@ -1434,6 +1442,7 @@ schedule_ulsch_rnti(module_id_t   module_idP,
     if (!ue_ul_slice_membership(module_idP, UE_id, slice_idx)) {
       continue;
     }
+    
     if (UE_list->UE_template[UE_PCCID(module_idP, UE_id)][UE_id].rach_resource_type > 0)  continue;
 
     // don't schedule if Msg5 is not received yet
@@ -2040,14 +2049,6 @@ void schedule_ulsch_rnti_emtc(module_id_t   module_idP,
       continue;
     }
 
-    /* CDRX LTE-M */
-    UE_sched_ctrl = &(UE_list->UE_sched_ctrl[UE_id]);
-    if (UE_sched_ctrl->cdrx_configured == TRUE) {
-      if ((UE_sched_ctrl->bypass_cdrx == FALSE) && (UE_sched_ctrl->in_active_time == FALSE)) {
-        continue;
-      }
-    }
-
     /* Loop over all active UL CC_ids for this UE */
     for (n = 0; n < UE_list->numactiveULCCs[UE_id]; n++) {
       /* This is the actual CC_id in the list */
@@ -2147,13 +2148,6 @@ void schedule_ulsch_rnti_emtc(module_id_t   module_idP,
 
         /* New transmission */
         if (round_UL == 0) {
-
-          /* CDRX LTE-M */
-          if (UE_sched_ctrl->cdrx_configured == TRUE) {
-            UE_sched_ctrl->drx_inactivity_timer = 1; // reset drx inactivity timer when new transmission
-            VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_DRX_INACTIVITY, (unsigned long) UE_sched_ctrl->drx_inactivity_timer);
-          }
-
           ndi = 1 - UE_template->oldNDI_UL[harq_pid];
 
           UE_template->oldNDI_UL[harq_pid] = ndi;
diff --git a/openair2/LAYER2/MAC/pre_processor.c b/openair2/LAYER2/MAC/pre_processor.c
index 3e04e601d3a95cc7b5b1541095665d7f0fde47a9..a25505bab4a31400b52f5b3076f51a7abf07b362 100644
--- a/openair2/LAYER2/MAC/pre_processor.c
+++ b/openair2/LAYER2/MAC/pre_processor.c
@@ -458,27 +458,28 @@ void decode_slice_positioning(module_id_t Mod_idP,
   }
 }
 
-
-// This function sorts the UE in order their dlsch buffer and CQI
-void
-sort_UEs(module_id_t Mod_idP,
-         int slice_idx,
-         int frameP,
-         sub_frame_t subframeP)
+//-----------------------------------------------------------------------------
+/*
+ * This function sorts the UEs in order, depending on their dlsch buffer and CQI
+ */
+void sort_UEs(module_id_t Mod_idP,
+              int slice_idx,
+              int frameP,
+              sub_frame_t subframeP)
+//-----------------------------------------------------------------------------
 {
-  int i;
   int list[MAX_MOBILES_PER_ENB];
   int list_size = 0;
   struct sort_ue_dl_params params = {Mod_idP, frameP, subframeP, slice_idx};
-  UE_list_t *UE_list = &RC.mac[Mod_idP]->UE_list;
+  UE_list_t *UE_list = &(RC.mac[Mod_idP]->UE_list);
   UE_sched_ctrl *UE_scheduling_control = NULL;
 
-  for (i = 0; i < MAX_MOBILES_PER_ENB; i++) {
+  for (int i = 0; i < MAX_MOBILES_PER_ENB; i++) {
 
     UE_scheduling_control = &(UE_list->UE_sched_ctrl[i]);
 
+    /* Check CDRX configuration and if UE is in active time for this subframe */
     if (UE_scheduling_control->cdrx_configured == TRUE) {
-
       if ((UE_scheduling_control->bypass_cdrx == FALSE) && (UE_scheduling_control->in_active_time == FALSE)) {
         continue;
       }
@@ -496,8 +497,9 @@ sort_UEs(module_id_t Mod_idP,
   qsort_r(list, list_size, sizeof(int), ue_dl_compare, &params);
 
   if (list_size) {
-    for (i = 0; i < list_size - 1; ++i)
+    for (int i = 0; i < list_size - 1; ++i) {
       UE_list->next[list[i]] = list[i + 1];
+    }
 
     UE_list->next[list[list_size - 1]] = -1;
     UE_list->head = list[0];
@@ -1992,26 +1994,29 @@ static int ue_ul_compare(const void *_a, const void *_b, void *_params) {
   return 0;
 }
 
-void
-sort_ue_ul(module_id_t module_idP,
-           int slice_idx,
-           int frameP,
-           sub_frame_t subframeP,
-           rnti_t *rntiTable)
+//-----------------------------------------------------------------------------
+/*
+ * This function sorts the UEs in order, depending on their ulsch buffer and CQI
+ */
+void sort_ue_ul(module_id_t module_idP,
+                int slice_idx,
+                int frameP,
+                sub_frame_t subframeP,
+                rnti_t *rntiTable)
+//-----------------------------------------------------------------------------
 {
-  int i;
   int list[MAX_MOBILES_PER_ENB];
   int list_size = 0;
   struct sort_ue_ul_params params = { module_idP, frameP, subframeP };
   UE_list_t *UE_list = &RC.mac[module_idP]->UE_list;
   UE_sched_ctrl *UE_scheduling_control = NULL;
 
-  for (i = 0; i < MAX_MOBILES_PER_ENB; i++) {
+  for (int i = 0; i < MAX_MOBILES_PER_ENB; i++) {
 
     UE_scheduling_control = &(UE_list->UE_sched_ctrl[i]);
 
+    /* Check CDRX configuration and if UE is in active time for this subframe */
     if (UE_scheduling_control->cdrx_configured == TRUE) {
-
       if ((UE_scheduling_control->bypass_cdrx == FALSE) && (UE_scheduling_control->in_active_time == FALSE)) {
         continue;
       }
@@ -2029,13 +2034,16 @@ sort_ue_ul(module_id_t module_idP,
 
   qsort_r(list, list_size, sizeof(int), ue_ul_compare, &params);
 
-  if (list_size) {                          // At mimimum one list element
-    for (i = 0; i < list_size - 1; i++)
+  if (list_size) { // At mimimum one list element
+    
+    for (int i = 0; i < list_size - 1; i++) {
       UE_list->next_ul[list[i]] = list[i + 1];
+    }
 
     UE_list->next_ul[list[list_size - 1]] = -1;
     UE_list->head_ul = list[0];
-  } else {                                  // No element
+
+  } else { // No element
     UE_list->head_ul = -1;
   }
 }
diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
index 0dea3c5e2cd7c4e4d8ed79d6daaeba76f7ac98fc..3ae6fbaea60e66806e36ecc3d5c0ba85ae41216d 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
@@ -3546,9 +3546,12 @@ uint16_t do_RRCConnectionReconfiguration_BR(const protocol_ctxt_t*        const
 #endif
 
 //------------------------------------------------------------------------------
-uint16_t do_RRCConnectionReconfiguration(const protocol_ctxt_t        *const ctxt_pP,
-					 uint8_t                            *buffer,
-					 uint8_t                             Transaction_id,
+/*
+ * Copy the different Information Elements in the RRC structure
+ */
+uint16_t do_RRCConnectionReconfiguration(const protocol_ctxt_t *const ctxt_pP,
+					 uint8_t                                *buffer,
+					 uint8_t                                 Transaction_id,
 					 LTE_SRB_ToAddModList_t                 *SRB_list,
 					 LTE_DRB_ToAddModList_t                 *DRB_list,
 					 LTE_DRB_ToReleaseList_t                *DRB_list2,
@@ -3561,7 +3564,7 @@ uint16_t do_RRCConnectionReconfiguration(const protocol_ctxt_t        *const ctx
 					 LTE_MAC_MainConfig_t                   *mac_MainConfig,
 					 LTE_MeasGapConfig_t                    *measGapConfig,
 					 LTE_MobilityControlInfo_t              *mobilityInfo,
-                                         LTE_SecurityConfigHO_t                 *securityConfigHO,
+                     LTE_SecurityConfigHO_t                 *securityConfigHO,
 					 struct LTE_MeasConfig__speedStatePars  *speedStatePars,
 					 LTE_RSRP_Range_t                       *rsrp,
 					 LTE_C_RNTI_t                           *cba_rnti,
@@ -3570,7 +3573,7 @@ uint16_t do_RRCConnectionReconfiguration(const protocol_ctxt_t        *const ctx
 					 LTE_SL_CommConfig_r12_t                *sl_CommConfig,
 					 LTE_SL_DiscConfig_r12_t                *sl_DiscConfig
 #if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
-					 , LTE_SCellToAddMod_r10_t  *SCell_config
+					 , LTE_SCellToAddMod_r10_t              *SCell_config
 #endif
 					 )
 //------------------------------------------------------------------------------
@@ -3582,7 +3585,8 @@ uint16_t do_RRCConnectionReconfiguration(const protocol_ctxt_t        *const ctx
   dl_dcch_msg.message.present           = LTE_DL_DCCH_MessageType_PR_c1;
   dl_dcch_msg.message.choice.c1.present = LTE_DL_DCCH_MessageType__c1_PR_rrcConnectionReconfiguration;
   rrcConnectionReconfiguration          = &dl_dcch_msg.message.choice.c1.choice.rrcConnectionReconfiguration;
-  // RRCConnectionReconfiguration
+  
+  /* RRC Connection Reconfiguration */
   rrcConnectionReconfiguration->rrc_TransactionIdentifier = Transaction_id;
   rrcConnectionReconfiguration->criticalExtensions.present = LTE_RRCConnectionReconfiguration__criticalExtensions_PR_c1;
   rrcConnectionReconfiguration->criticalExtensions.choice.c1.present = LTE_RRCConnectionReconfiguration__criticalExtensions__c1_PR_rrcConnectionReconfiguration_r8 ;