diff --git a/Console/Transmitter/m4iset_8ch.c b/Console/Transmitter/m4iset_8ch.c
index 320ba882ca1d2e258c77b161fc93de43cce0c3a4..c2bbe38c93bc1e31529cd5f5af05624fd5b5ce2b 100644
--- a/Console/Transmitter/m4iset_8ch.c
+++ b/Console/Transmitter/m4iset_8ch.c
@@ -8,20 +8,16 @@
 
 void m4iset_(int16 *pvData, int16 *pvData1, int32 *lMemsize)
     {
-
-    drv_handle hDrv;
-    drv_handle hDrv1;
-    drv_handle hSync;
+    drv_handle hDrv;    //The instance of the first card
+    drv_handle hDrv1;   //The instance of the second card
+    drv_handle hSync;   //The instance of the star-hub
 
     char szErrorText[ERRORTEXTLEN];
     int32 lCardType;
     int32 allchan;
     int32 ausgabe;
     int64 lSamplerate;
-    uint32 dwXMode;
 
-//    hDrv  = spcm_hOpen ("/dev/spcm0");
-//    hDrv1 = spcm_hOpen ("/dev/spcm1");
 
     hDrv  = spcm_hOpen ("/dev/spcm1");
     hDrv1 = spcm_hOpen ("/dev/spcm2");
@@ -47,11 +43,11 @@ void m4iset_(int16 *pvData, int16 *pvData1, int32 *lMemsize)
 
 
     spcm_dwSetParam_i32 (hDrv1, SPC_CLOCKMODE, SPC_CM_INTPLL);
-//    spcm_dwSetParam_i64 (hDrv1, SPC_SAMPLERATE,625000000);
+//    spcm_dwSetParam_i64 (hDrv1, SPC_SAMPLERATE,625000000);   // The sampling rate can be changed to 625 MHz. //Please see the paper why 400 MHz is used.
     spcm_dwSetParam_i64 (hDrv1, SPC_SAMPLERATE,400000000);
     spcm_dwSetParam_i32 (hDrv1, SPC_CLOCKOUT,  1);  // enable clock output
 
-//    spcm_dwSetParam_i32 (hDrv, SPC_CLOCKMODE, SPC_CM_INTPLL);
+
 //    spcm_dwSetParam_i64 (hDrv, SPC_SAMPLERATE,625000000);
     spcm_dwSetParam_i64 (hDrv, SPC_SAMPLERATE,400000000);
 //    spcm_dwSetParam_i32 (hDrv, SPC_CLOCKOUT,  1);  // enable clock output
@@ -60,44 +56,15 @@ void m4iset_(int16 *pvData, int16 *pvData1, int32 *lMemsize)
     spcm_dwSetParam_i32 (hDrv,  SPCM_X2_MODE, SPCM_XMODE_TRIGOUT);
     spcm_dwSetParam_i32 (hDrv1, SPCM_X2_MODE, SPCM_XMODE_TRIGOUT);
     
-    
-
-//    spcm_dwSetParam_i32 (hDrv1, SPCM_X2_MODE, SPCM_XMODE_CONTOUTMARK);
-
-
-//    spcm_dwGetParam_i32 (hDrv1, SPCM_X1_AVAILMODES, &ausgabe);
-//    printf ("available modes = %d\n", ausgabe);
-
 
     spcm_dwGetParam_i64 (hDrv1, SPC_SAMPLERATE, &lSamplerate);
     printf ("Sample rate = %d\n", lSamplerate);
 
-//    printf ("first sample = %d\n", pvData[0]);
-//    printf ("first sample = %d\n", pvData1[0]);
-
-
-//    dwXMode = (SPCM_XMODE_DIGOUT | SPCM_XMODE_DIGOUTSRC_CH1 | SPCM_XMODE_DIGOUTSRC_BIT15);
-//    spcm_dwSetParam_i32 (hDrv1, SPCM_X1_MODE, dwXMode);
-//    spcm_dwGetParam_i32 (hDrv1, SPCM_X1_MODE, &ausgabe);
-//    printf ("actual X0 mode = %d\n", ausgabe);
-
-
-
-
-    spcm_dwSetParam_i32 (hDrv, SPC_CHENABLE, CHANNEL0|CHANNEL1|CHANNEL2|CHANNEL3);
-
-
-//    dwXMode = (SPCM_XMODE_DIGOUT | SPCM_XMODE_DIGOUTSRC_CH0 | SPCM_XMODE_DIGOUTSRC_BIT15);
-//    spcm_dwSetParam_i32 (hDrv, SPCM_X0_MODE, dwXMode);
-//    spcm_dwGetParam_i32 (hDrv, SPCM_X0_MODE, &ausgabe);
-//    printf ("actual X0 mode = %d\n", ausgabe);
-
-
-
+    spcm_dwSetParam_i32 (hDrv, SPC_CHENABLE, CHANNEL0|CHANNEL1|CHANNEL2|CHANNEL3); //Enable all channels
 
     spcm_dwSetParam_i32 (hDrv, SPC_ENABLEOUT0, 1);
-    spcm_dwSetParam_i32 (hDrv, SPC_AMP0, 1000);
-    spcm_dwSetParam_i32 (hDrv, SPC_FILTER0, 0);
+    spcm_dwSetParam_i32 (hDrv, SPC_AMP0, 1000);   //Full dynamic range of amplitude
+    spcm_dwSetParam_i32 (hDrv, SPC_FILTER0, 0);   //No filter is used
 
     spcm_dwSetParam_i32 (hDrv, SPC_ENABLEOUT1, 1);
     spcm_dwSetParam_i32 (hDrv, SPC_AMP1, 1000);
@@ -111,19 +78,7 @@ void m4iset_(int16 *pvData, int16 *pvData1, int32 *lMemsize)
     spcm_dwSetParam_i32 (hDrv, SPC_AMP3, 1000);
     spcm_dwSetParam_i32 (hDrv, SPC_FILTER3, 0);
 
-
-
-
-    spcm_dwSetParam_i32 (hDrv1, SPC_CHENABLE, CHANNEL0|CHANNEL1|CHANNEL2|CHANNEL3);
-
-
-//    dwXMode = (SPCM_XMODE_DIGOUT | SPCM_XMODE_DIGOUTSRC_CH0 | SPCM_XMODE_DIGOUTSRC_BIT15);
-//    spcm_dwSetParam_i32 (hDrv1, SPCM_X0_MODE, dwXMode);
-//    spcm_dwGetParam_i32 (hDrv1, SPCM_X0_MODE, &ausgabe);
-//    printf ("actual X0 mode = %d\n", ausgabe);
-
-
-
+    spcm_dwSetParam_i32 (hDrv1, SPC_CHENABLE, CHANNEL0|CHANNEL1|CHANNEL2|CHANNEL3); //Enable channels for the other card
 
     spcm_dwSetParam_i32 (hDrv1, SPC_ENABLEOUT0, 1);
     spcm_dwSetParam_i32 (hDrv1, SPC_AMP0, 1000);
@@ -141,54 +96,27 @@ void m4iset_(int16 *pvData, int16 *pvData1, int32 *lMemsize)
     spcm_dwSetParam_i32 (hDrv1, SPC_AMP3, 1000);
     spcm_dwSetParam_i32 (hDrv1, SPC_FILTER3, 0);
 
-
-
-
-
-
-
-//    spcm_dwSetParam_i32 (hDrv, SPC_M2CMD, M2CMD_CARD_WRITESETUP);
-//    spcm_dwSetParam_i32 (hDrv1, SPC_M2CMD, M2CMD_CARD_WRITESETUP);
-
-
-
-
-//    spcm_dwSetParam_i32 (hDrv, SPCM_XX_ASYNCIO, 0);
-//    spcm_dwSetParam_i32 (hDrv, SPCM_XX_ASYNCIO, 1);
-//    spcm_dwSetParam_i32 (hDrv, SPCM_XX_ASYNCIO, 0);
-
-
-    spcm_dwSetParam_i32 (hDrv, SPC_CARDMODE, SPC_REP_STD_SINGLE);
-    spcm_dwSetParam_i32 (hDrv, SPC_MEMSIZE, *lMemsize);
-    spcm_dwSetParam_i32 (hDrv, SPC_LOOPS, 1);   //60000
+    spcm_dwSetParam_i32 (hDrv, SPC_CARDMODE, SPC_REP_STD_SINGLE); //Single mode is used. Refer to the other modes in manufacturer's documentation (i.e. sequence mode)
+    spcm_dwSetParam_i32 (hDrv, SPC_MEMSIZE, *lMemsize);          // Set the memory block size
+    spcm_dwSetParam_i32 (hDrv, SPC_LOOPS, 1);                    // Only a single pulse is transmitted. The number can be increased further 
     
-    spcm_dwSetParam_i32 (hDrv1, SPC_CARDMODE, SPC_REP_STD_SINGLE);
+    spcm_dwSetParam_i32 (hDrv1, SPC_CARDMODE, SPC_REP_STD_SINGLE); //Repeat it for the second card
     spcm_dwSetParam_i32 (hDrv1, SPC_MEMSIZE, *lMemsize);
     spcm_dwSetParam_i32 (hDrv1, SPC_LOOPS, 1);
 
-
-
-
-    spcm_dwDefTransfer_i64 (hDrv, SPCM_BUF_DATA, SPCM_DIR_PCTOCARD, 0, pvData, 0, 8* *lMemsize);
+    spcm_dwDefTransfer_i64 (hDrv,  SPCM_BUF_DATA, SPCM_DIR_PCTOCARD, 0, pvData,  0, 8* *lMemsize); //Here we get the pulse data from the fortran code to write into the device memory.
     spcm_dwDefTransfer_i64 (hDrv1, SPCM_BUF_DATA, SPCM_DIR_PCTOCARD, 0, pvData1, 0, 8* *lMemsize);
 
+    spcm_dwSetParam_i32 (hDrv,  SPC_M2CMD, M2CMD_DATA_STARTDMA | M2CMD_DATA_WAITDMA); //Device handles the rest but we need to tell the DMA operation. Please check documentation for the details.
+    spcm_dwSetParam_i32 (hDrv1, SPC_M2CMD, M2CMD_DATA_STARTDMA | M2CMD_DATA_WAITDMA);    
+    spcm_dwSetParam_i32 (hSync, SPC_M2CMD, M2CMD_CARD_START | M2CMD_CARD_FORCETRIGGER | M2CMD_CARD_WAITREADY); //The cards start with a software trigger. 
 
-
-    spcm_dwSetParam_i32 (hDrv, SPC_M2CMD, M2CMD_DATA_STARTDMA | M2CMD_DATA_WAITDMA);
-    spcm_dwSetParam_i32 (hDrv1, SPC_M2CMD, M2CMD_DATA_STARTDMA | M2CMD_DATA_WAITDMA);
-    
-    
-    spcm_dwSetParam_i32 (hSync, SPC_M2CMD, M2CMD_CARD_START | M2CMD_CARD_FORCETRIGGER | M2CMD_CARD_WAITREADY);
-
-
-
-    
-    if (spcm_dwGetErrorInfo_i32(hDrv,NULL,NULL,szErrorText) != ERR_OK)
+    if (spcm_dwGetErrorInfo_i32(hDrv,NULL,NULL,szErrorText) != ERR_OK) //Check if there is any error issued by the card
        {printf(szErrorText);
         spcm_vClose (hDrv);
 	}
-	
-    spcm_vClose (hDrv);
+	//Close the cards
+    spcm_vClose (hDrv);  
     spcm_vClose (hDrv1);
     spcm_vClose (hSync);