   while(src[counter]!=start_char) counter++;//Wait until find the start_char
   counter++;//Can remove this line by using advanced approach?
   if(src[counter]==NULL) return NULL;//Counldn't find the start_char? Return NULL!
-  while(src[counter]!=terminator){
+  while(src[counter]!=terminator){//Fill the acceptable chars into temp containter
     temp[array_length]=src[counter];
     counter++;
     array_length++;
   }
   if(array_length==0) return NULL;//Can remove this line by using advanced approach?
-  char* result=(char*)malloc(sizeof(char) * array_length);
+  char* result=(char*)malloc(sizeof(char) * array_length);//Initialize result pointer
   for(int i=0;i<array_length;i++) result[i]=temp[i];
-  free(temp);
+  free(temp);//Free memory spend by temp containter
   return result;
 }

    Serial.println(gpsSerial.read());
    Serial.println("Waiting for buffer to be filled");*/

  gpsbuffer = dynamic_array_serial(gpsSerial, MAX_BUFFER_SIZE , '$', '*');
  //Serial.println("Succeed in loading buffer with data");
  //Serial.println(array_length);
  for (int i; i < array_length - 1; i++) {
    Serial.print(gpsbuffer[i]);
  }
  Serial.println();

            //Serial.println("End listening");
            //Serial.println(result[0]);
            if(string_pattern_checker(result,GPS_START_PATTERN)){
              return result;
            }
            else return NULL;//Not the data we want? Return NULL!
          }
          else {
            result[i] = max_array[i];
