data logger sim808

help to refine my code, am new and do not have much knowledge of programming, my code here is basically reads data from sim 808, parses data lat long and speed, i plan to use speed data for creating alerts. i do not want to use the lib available for sim 808. As of now i have been able to successfully pase my data. plan to write code for sd card using lib

#include<SoftwareSerial.h>
SoftwareSerial sim808(2,3); //rx,tx


char incomingbuffer[70];
char commapsn[15];
int i=0;
int b;
unsigned long previousmillis=0;
unsigned long currentmillis=0;
void setup(){  Serial.begin(9600); //initialise hardware serial
 
                        while(!Serial){ 
                           ;       // waits for native usb port to get connected
                        } //end of while
  
                      sim808.begin(9600); //initialises software serial
            }   //end setup
void loop(){ 
            Serial.println("repeating loop");
             processIncoming(10000);
             printincoming();
              i=0;
              sim808.print("ATE0\n");
              processIncoming(2000);
              printincoming();
              sim808.print("ATV0\n");
              processIncoming(2000);
              printincoming();
              sim808.print("AT+CGPSPWR=1\n");
              processIncoming(2000);
              printincoming();
              sim808.print("AT+CGPSRST=0\n");
              processIncoming(5000);
              printincoming();
              delay(5000);
              sim808.print("AT+CGPSSTATUS?\n");
              processIncoming(1000);
              printincoming();
              sim808.print("AT+CGPSINF=0\n");
              processIncoming(1000);
              printincoming();
              
              while(1){
                        currentmillis=millis();
                        if((currentmillis-previousmillis)>5000)
                        {
                          previousmillis=currentmillis;
                          sim808.print("AT+CGPSINF=32\n");
                          processIncoming(100);
                          printincoming();
                          
                          }
                        
                       }
         
        }
   
   void processIncoming(int wait){
                          char incomingchar;
                          unsigned long previousmilli;
                          Serial.println("waiting for incoming");
                          while(!sim808.available())
                          {;
                            }
                          
                           Serial.println("serial available");
                          
                           previousmilli=millis();
                          while( (unsigned long)(previousmilli+wait)>millis())
                              {
                             while(sim808.available()>0){
                                                          incomingchar=sim808.read();
                                                          //Serial.print(incomingchar);
                                                          incomingbuffer[i]=incomingchar;
                                                          i++;
                                                          
                                                          
                                                         }
                          
                           }
                           b=i;
                           i=0;
                           sim808.flush();
                           parseincomming();
                               
                           }


void parseincomming()
            { unsigned int count2,startP,stopP,seperator,blat,bLongi,bHrs,bMin,bSec,bSpeed,bDate,bMon,bYr;
              
              seperator=0;
              for(count2=0;count2<b;count2++){
                if(incomingbuffer[count2]=='V'){
                  Serial.println("DATA INVALID"); 
                  goto bailout;
                  }
              }
              for(count2=0;count2<b;count2++){
                if(incomingbuffer[count2]==',')
                {
                  seperator++;
                  commapsn[(seperator-1)]=count2;
                 // Serial.println(seperator);
                }
                }
                parsetime();
                    
             bailout:
               ;
            
           }
void parsetime()
{int i=0,hh, UTChh,UTCmm;
  hh=commapsn[0];
    UTChh=(((incomingbuffer[hh+1]-'0')*10) +((incomingbuffer[hh+2]-'0'))+5);
    UTCmm=(((incomingbuffer[hh+3]-'0')*10) +((incomingbuffer[hh+4]-'0'))+30);
    if(UTCmm>=60)
      {
        UTChh=UTChh+1;
        UTCmm=(UTCmm-60);
      }
    Serial.print("UTChh=");
    Serial.println(UTChh);
    Serial.print("UTCmm=");
    Serial.println(UTCmm);
  }
  
  
  

                                               
                             //end of processincoming fun
 void printincoming()
                    { char relaychar;
                     Serial.println("printing  incoming");
                        for (int count=0; count<b;count++)
                                      { relaychar=incomingbuffer[count];
                                      if(relaychar=='\n')
                                                                {
                                                                  Serial.print("/n");
                                                                }
                                         Serial.print(relaychar);
                                       } // end of if
                    Serial.println(i);
                    }

Why refining the code if it works?