truncating the code to 80 columns
diff --git a/api.go b/api.go
index 25cbbf2..03f5e31 100644
--- a/api.go
+++ b/api.go
@@ -21,7 +21,8 @@
 func initAPI(services apid.Services) {
 	log.Debug("initialized API's exposed by apidAnalytics plugin")
 	analyticsBasePath = config.GetString(configAnalyticsBasePath)
-	services.API().HandleFunc(analyticsBasePath+"/{bundle_scope_uuid}", saveAnalyticsRecord).Methods("POST")
+	services.API().HandleFunc(analyticsBasePath+"/{bundle_scope_uuid}",
+		saveAnalyticsRecord).Methods("POST")
 }
 
 func saveAnalyticsRecord(w http.ResponseWriter, r *http.Request) {
@@ -30,12 +31,15 @@
 
 	db := getDB() // When database isnt initialized
 	if db == nil {
-		writeError(w, http.StatusInternalServerError, "INTERNAL_SERVER_ERROR", "Service is not initialized completely")
+		writeError(w, http.StatusInternalServerError,
+			"INTERNAL_SERVER_ERROR",
+			"Service is not initialized completely")
 		return
 	}
 
 	if !strings.EqualFold(r.Header.Get("Content-Type"), "application/json") {
-		writeError(w, http.StatusBadRequest, "UNSUPPORTED_CONTENT_TYPE", "Only supported content type is application/json")
+		writeError(w, http.StatusBadRequest, "UNSUPPORTED_CONTENT_TYPE",
+			"Only supported content type is application/json")
 		return
 	}
 
@@ -45,16 +49,19 @@
 	if dbErr.ErrorCode != "" {
 		switch dbErr.ErrorCode {
 		case "INTERNAL_SEARCH_ERROR":
-			writeError(w, http.StatusInternalServerError, "INTERNAL_SEARCH_ERROR", dbErr.Reason)
+			writeError(w, http.StatusInternalServerError,
+				"INTERNAL_SEARCH_ERROR", dbErr.Reason)
 		case "UNKNOWN_SCOPE":
-			writeError(w, http.StatusBadRequest, "UNKNOWN_SCOPE", dbErr.Reason)
+			writeError(w, http.StatusBadRequest,
+				"UNKNOWN_SCOPE", dbErr.Reason)
 		}
 	} else {
 		err := processPayload(tenant, scopeuuid, r)
 		if err.ErrorCode == "" {
 			w.WriteHeader(http.StatusOK)
 		} else {
-			writeError(w, http.StatusBadRequest, err.ErrorCode, err.Reason)
+			writeError(w, http.StatusBadRequest,
+				err.ErrorCode, err.Reason)
 		}
 	}
 }
diff --git a/api_helper.go b/api_helper.go
index 34ca14e..24dba22 100644
--- a/api_helper.go
+++ b/api_helper.go
@@ -9,7 +9,8 @@
 )
 
 /*
-Implements all the helper methods needed to process the POST /analytics payload and send it to the internal buffer channel
+Implements all the helper methods needed to process the POST /analytics payload
+and send it to the internal buffer channel
 */
 
 type developerInfo struct {
@@ -20,8 +21,9 @@
 }
 
 type axRecords struct {
-	Tenant  tenant
-	Records []interface{} // Records is an array of multiple analytics records
+	Tenant tenant
+	// Records is an array of multiple analytics records
+	Records []interface{}
 }
 
 type tenant struct {
@@ -34,7 +36,9 @@
 	var gzipEncoded bool
 	if r.Header.Get("Content-Encoding") != "" {
 		if !strings.EqualFold(r.Header.Get("Content-Encoding"), "gzip") {
-			return errResponse{ErrorCode: "UNSUPPORTED_CONTENT_ENCODING", Reason: "Only supported content encoding is gzip"}
+			return errResponse{
+				ErrorCode: "UNSUPPORTED_CONTENT_ENCODING",
+				Reason:    "Only supported content encoding is gzip"}
 		} else {
 			gzipEncoded = true
 		}
@@ -45,7 +49,9 @@
 	if gzipEncoded {
 		reader, err = gzip.NewReader(r.Body) // reader for gzip encoded data
 		if err != nil {
-			return errResponse{ErrorCode: "BAD_DATA", Reason: "Gzip Encoded data cannot be read"}
+			return errResponse{
+				ErrorCode: "BAD_DATA",
+				Reason:    "Gzip Encoded data cannot be read"}
 		}
 	} else {
 		reader = r.Body
@@ -64,7 +70,8 @@
 	decoder.UseNumber()
 
 	if err := decoder.Decode(&raw); err != nil {
-		return errResponse{ErrorCode: "BAD_DATA", Reason: "Not a valid JSON payload"}
+		return errResponse{ErrorCode: "BAD_DATA",
+			Reason: "Not a valid JSON payload"}
 	}
 
 	if records := raw["records"]; records != nil {
@@ -75,14 +82,19 @@
 			if valid {
 				enrich(recordMap, scopeuuid, tenant)
 			} else {
-				return err // Even if there is one bad record, then reject entire batch
+				// Even if there is one bad record, then reject entire batch
+				return err
 			}
 		}
-		axRecords := axRecords{Tenant: tenant, Records: records.([]interface{})}
+		axRecords := axRecords{
+			Tenant:  tenant,
+			Records: records.([]interface{})}
 		// publish batch of records to channel (blocking call)
 		internalBuffer <- axRecords
 	} else {
-		return errResponse{ErrorCode: "NO_RECORDS", Reason: "No analytics records in the payload"}
+		return errResponse{
+			ErrorCode: "NO_RECORDS",
+			Reason:    "No analytics records in the payload"}
 	}
 	return errResponse{}
 }
@@ -96,7 +108,9 @@
 	elems := []string{"client_received_start_timestamp"}
 	for _, elem := range elems {
 		if recordMap[elem] == nil {
-			return false, errResponse{ErrorCode: "MISSING_FIELD", Reason: "Missing Required field: " + elem}
+			return false, errResponse{
+				ErrorCode: "MISSING_FIELD",
+				Reason:    "Missing Required field: " + elem}
 		}
 	}
 
@@ -104,7 +118,10 @@
 	cret, exists2 := recordMap["client_received_end_timestamp"]
 	if exists1 && exists2 {
 		if crst.(json.Number) > cret.(json.Number) {
-			return false, errResponse{ErrorCode: "BAD_DATA", Reason: "client_received_start_timestamp > client_received_end_timestamp"}
+			return false, errResponse{
+				ErrorCode: "BAD_DATA",
+				Reason: "client_received_start_timestamp " +
+					"> client_received_end_timestamp"}
 		}
 	}
 	return true, errResponse{}
diff --git a/api_test.go b/api_test.go
index f56a463..d172a29 100644
--- a/api_test.go
+++ b/api_test.go
@@ -20,7 +20,8 @@
 			v.Add("bundle_scope_uuid", "testid")
 
 			client := &http.Client{}
-			req, err := http.NewRequest("POST", uri.String(), strings.NewReader(v.Encode()))
+			req, err := http.NewRequest("POST", uri.String(),
+				strings.NewReader(v.Encode()))
 			res, err := client.Do(req)
 			defer res.Body.Close()
 			Expect(err).ShouldNot(HaveOccurred())
@@ -37,7 +38,8 @@
 			v.Add("bundle_scope_uuid", "wrongId")
 
 			client := &http.Client{}
-			req, err := http.NewRequest("POST", uri.String(), strings.NewReader(v.Encode()))
+			req, err := http.NewRequest("POST", uri.String(),
+				strings.NewReader(v.Encode()))
 			res, err := client.Do(req)
 			defer res.Body.Close()
 			Expect(err).ShouldNot(HaveOccurred())
diff --git a/apidAnalytics_suite_test.go b/apidAnalytics_suite_test.go
index 247212f..1e5c128 100644
--- a/apidAnalytics_suite_test.go
+++ b/apidAnalytics_suite_test.go
@@ -33,8 +33,9 @@
 	Expect(err).NotTo(HaveOccurred())
 
 	config.Set("data_path", testTempDir)
-	config.Set(uapServerBase, "http://localhost:9000")                                // dummy value
-	config.Set("apigeesync_apid_instance_id", "abcdefgh-ijkl-mnop-qrst-uvwxyz123456") // dummy value
+	config.Set(uapServerBase, "http://localhost:9000") // dummy value
+	config.Set("apigeesync_apid_instance_id",
+		"abcdefgh-ijkl-mnop-qrst-uvwxyz123456") // dummy value
 	config.Set(useCaching, true)
 
 	db, err := apid.Data().DB()
@@ -49,11 +50,12 @@
 	createTenantCache()
 	createDeveloperInfoCache()
 
-	testServer = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
-		if req.URL.Path == analyticsBasePathDefault {
-			saveAnalyticsRecord(w, req)
-		}
-	}))
+	testServer = httptest.NewServer(http.HandlerFunc(
+		func(w http.ResponseWriter, req *http.Request) {
+			if req.URL.Path == analyticsBasePathDefault {
+				saveAnalyticsRecord(w, req)
+			}
+		}))
 })
 
 func createTables(db apid.DB) {
@@ -169,7 +171,8 @@
 
 	txn, err := db.Begin()
 	Expect(err).ShouldNot(HaveOccurred())
-	txn.Exec("INSERT INTO APP_CREDENTIAL_APIPRODUCT_MAPPER (tenant_id, appcred_id, app_id, apiprdt_id, status, _change_selector) "+
+	txn.Exec("INSERT INTO APP_CREDENTIAL_APIPRODUCT_MAPPER (tenant_id,"+
+		" appcred_id, app_id, apiprdt_id, status, _change_selector) "+
 		"VALUES"+
 		"($1,$2,$3,$4,$5,$6)",
 		"tenantid",
@@ -206,7 +209,8 @@
 		"testdeveloper@test.com",
 	)
 
-	txn.Exec("INSERT INTO DATA_SCOPE (id, _change_selector, apid_cluster_id, scope, org, env) "+
+	txn.Exec("INSERT INTO DATA_SCOPE (id, _change_selector, "+
+		"apid_cluster_id, scope, org, env) "+
 		"VALUES"+
 		"($1,$2,$3,$4,$5,$6)",
 		"testid",
diff --git a/buffering_manager.go b/buffering_manager.go
index 6ec1ec1..7e28d4b 100644
--- a/buffering_manager.go
+++ b/buffering_manager.go
@@ -13,10 +13,12 @@
 
 const fileExtension = ".txt.gz"
 
-// Channel where analytics records are buffered before being dumped to a file as write to file should not performed in the Http Thread
+// Channel where analytics records are buffered before being dumped to a
+// file as write to file should not performed in the Http Thread
 var internalBuffer chan axRecords
 
-// Channel where close bucket event is published i.e. when a bucket is ready to be closed based on collection interval
+// Channel where close bucket event is published i.e. when a bucket
+// is ready to be closed based on collection interval
 var closeBucketEvent chan bucket
 
 // Map from timestampt to bucket
@@ -36,7 +38,8 @@
 }
 
 func initBufferingManager() {
-	internalBuffer = make(chan axRecords, config.GetInt(analyticsBufferChannelSize))
+	internalBuffer = make(chan axRecords,
+		config.GetInt(analyticsBufferChannelSize))
 	closeBucketEvent = make(chan bucket)
 	bucketMap = make(map[int64]bucket)
 
@@ -46,7 +49,8 @@
 			records := <-internalBuffer
 			err := save(records)
 			if err != nil {
-				log.Errorf("Could not save %d messages to file due to: %v", len(records.Records), err)
+				log.Errorf("Could not save %d messages to file"+
+					" due to: %v", len(records.Records), err)
 			}
 		}
 	}()
@@ -55,17 +59,20 @@
 	go func() {
 		for {
 			bucket := <-closeBucketEvent
-			log.Debugf("Close Event received for bucket: %s", bucket.DirName)
+			log.Debugf("Close Event received for bucket: %s",
+				bucket.DirName)
 
 			// close open file
 			closeGzipFile(bucket.FileWriter)
 
 			dirToBeClosed := filepath.Join(localAnalyticsTempDir, bucket.DirName)
 			stagingPath := filepath.Join(localAnalyticsStagingDir, bucket.DirName)
-			// close files in tmp folder and move directory to staging to indicate its ready for upload
+			// close files in tmp folder and move directory to
+			// staging to indicate its ready for upload
 			err := os.Rename(dirToBeClosed, stagingPath)
 			if err != nil {
-				log.Errorf("Cannot move directory '%s' from tmp to staging folder", bucket.DirName)
+				log.Errorf("Cannot move directory '%s' from"+
+					" tmp to staging folder", bucket.DirName)
 			}
 		}
 	}()
@@ -82,7 +89,8 @@
 }
 
 func getBucketForTimestamp(now time.Time, tenant tenant) (bucket, error) {
-	// first based on current timestamp and collection interval, determine the timestamp of the bucket
+	// first based on current timestamp and collection interval,
+	// determine the timestamp of the bucket
 	ts := now.Unix() / int64(config.GetInt(analyticsCollectionInterval)) * int64(config.GetInt(analyticsCollectionInterval))
 	_, exists := bucketMap[ts]
 	if exists {
@@ -99,12 +107,16 @@
 		// create dir
 		err := os.Mkdir(newPath, os.ModePerm)
 		if err != nil {
-			return bucket{}, fmt.Errorf("Cannot create directory '%s' to buffer messages '%v'", dirName, err)
+			return bucket{}, fmt.Errorf("Cannot create directory "+
+				"'%s' to buffer messages '%v'", dirName, err)
 		}
 
 		// create file for writing
 		// Format: <4DigitRandomHex>_<TSStart>.<TSEnd>_<APIDINSTANCEUUID>_writer_0.txt.gz
-		fileName := getRandomHex() + "_" + timestamp + "." + endtimestamp + "_" + config.GetString("apigeesync_apid_instance_id") + "_writer_0" + fileExtension
+		fileName := getRandomHex() + "_" + timestamp + "." +
+			endtimestamp + "_" +
+			config.GetString("apigeesync_apid_instance_id") +
+			"_writer_0" + fileExtension
 		completeFilePath := filepath.Join(newPath, fileName)
 		fw, err := createGzipFile(completeFilePath)
 		if err != nil {
@@ -114,7 +126,8 @@
 		newBucket := bucket{DirName: dirName, FileWriter: fw}
 		bucketMap[ts] = newBucket
 
-		//Send event to close directory after endTime + 5 seconds to make sure all buffers are flushed to file
+		//Send event to close directory after endTime + 5
+		// seconds to make sure all buffers are flushed to file
 		timer := time.After(endTime.Sub(time.Now()) + time.Second*5)
 		go func() {
 			<-timer
@@ -124,7 +137,8 @@
 	}
 }
 
-// 4 digit Hex is prefixed to each filename to improve how s3 partitions the files being uploaded
+// 4 digit Hex is prefixed to each filename to improve
+// how s3 partitions the files being uploaded
 func getRandomHex() string {
 	buff := make([]byte, 2)
 	rand.Read(buff)
@@ -134,7 +148,9 @@
 func createGzipFile(s string) (fileWriter, error) {
 	file, err := os.OpenFile(s, os.O_WRONLY|os.O_CREATE, os.ModePerm)
 	if err != nil {
-		return fileWriter{}, fmt.Errorf("Cannot create file '%s' to buffer messages '%v'", s, err)
+		return fileWriter{},
+			fmt.Errorf("Cannot create file '%s' "+
+				"to buffer messages '%v'", s, err)
 	}
 	gw := gzip.NewWriter(file)
 	bw := bufio.NewWriter(gw)
diff --git a/common_helper.go b/common_helper.go
index 31f7d82..9acc033 100644
--- a/common_helper.go
+++ b/common_helper.go
@@ -9,16 +9,19 @@
 // Cache for scope uuid to org, env and tenantId information
 var tenantCache map[string]tenant
 
-// RW lock for tenant map cache since the cache can be read while its being written to and vice versa
+// RW lock for tenant map cache since the cache can be
+// read while its being written to and vice versa
 var tenantCachelock = sync.RWMutex{}
 
 // Cache for apiKey~tenantId to developer related information
 var developerInfoCache map[string]developerInfo
 
-// RW lock for developerInfo map cache since the cache can be read while its being written to and vice versa
+// RW lock for developerInfo map cache since the cache can be
+// read while its being written to and vice versa
 var developerInfoCacheLock = sync.RWMutex{}
 
-// Load data scope information into an in-memory cache so that for each record a DB lookup is not required
+// Load data scope information into an in-memory cache so that
+// for each record a DB lookup is not required
 func createTenantCache() error {
 	// Lock before writing to the map as it has multiple readers
 	tenantCachelock.Lock()
@@ -30,12 +33,15 @@
 	rows, error := db.Query("SELECT env, org, scope, id FROM DATA_SCOPE")
 
 	if error != nil {
-		return fmt.Errorf("Count not get datascope from DB due to: %v", error)
+		return fmt.Errorf("Count not get datascope from "+
+			"DB due to: %v", error)
 	} else {
 		defer rows.Close()
 		for rows.Next() {
 			rows.Scan(&env, &org, &tenantId, &id)
-			tenantCache[id] = tenant{Org: org, Env: env, TenantId: tenantId}
+			tenantCache[id] = tenant{Org: org,
+				Env:      env,
+				TenantId: tenantId}
 		}
 	}
 
@@ -43,7 +49,8 @@
 	return nil
 }
 
-// Load data scope information into an in-memory cache so that for each record a DB lookup is not required
+// Load data scope information into an in-memory cache so that
+// for each record a DB lookup is not required
 func createDeveloperInfoCache() error {
 	// Lock before writing to the map as it has multiple readers
 	developerInfoCacheLock.Lock()
@@ -53,7 +60,8 @@
 	var tenantId, apiKey string
 
 	db := getDB()
-	sSql := "SELECT mp.tenant_id, mp.appcred_id, ap.name, a.name, d.username, d.email " +
+	sSql := "SELECT mp.tenant_id, mp.appcred_id, ap.name," +
+		" a.name, d.username, d.email " +
 		"FROM APP_CREDENTIAL_APIPRODUCT_MAPPER as mp " +
 		"INNER JOIN API_PRODUCT as ap ON ap.id = mp.apiprdt_id " +
 		"INNER JOIN APP AS a ON a.id = mp.app_id " +
@@ -61,11 +69,13 @@
 	rows, error := db.Query(sSql)
 
 	if error != nil {
-		return fmt.Errorf("Count not get developerInfo from DB due to: %v", error)
+		return fmt.Errorf("Count not get developerInfo "+
+			"from DB due to: %v", error)
 	} else {
 		defer rows.Close()
 		for rows.Next() {
-			rows.Scan(&tenantId, &apiKey, &apiProduct, &developerApp, &developer, &developerEmail)
+			rows.Scan(&tenantId, &apiKey, &apiProduct,
+				&developerApp, &developer, &developerEmail)
 
 			keyForMap := getKeyForDeveloperInfoCache(tenantId, apiKey)
 			apiPrd := getValuesIgnoringNull(apiProduct)
@@ -73,15 +83,21 @@
 			dev := getValuesIgnoringNull(developer)
 			devEmail := getValuesIgnoringNull(developerEmail)
 
-			developerInfoCache[keyForMap] = developerInfo{ApiProduct: apiPrd, DeveloperApp: devApp, DeveloperEmail: devEmail, Developer: dev}
+			developerInfoCache[keyForMap] = developerInfo{
+				ApiProduct:     apiPrd,
+				DeveloperApp:   devApp,
+				DeveloperEmail: devEmail,
+				Developer:      dev}
 		}
 	}
 
-	log.Debugf("Count of apiKey~tenantId combinations in the cache: %d", len(developerInfoCache))
+	log.Debugf("Count of apiKey~tenantId combinations "+
+		"in the cache: %d", len(developerInfoCache))
 	return nil
 }
 
-// Returns Tenant Info given a scope uuid from the cache or by querying the DB directly based on useCachig config
+// Returns Tenant Info given a scope uuid from the cache or by querying
+// the DB directly based on useCachig config
 func getTenantForScope(scopeuuid string) (tenant, dbError) {
 	if config.GetBool(useCaching) {
 		// acquire a read lock as this cache has 1 writer as well
@@ -91,9 +107,12 @@
 		if !exists {
 			reason := "No tenant found for this scopeuuid: " + scopeuuid
 			errorCode := "UNKNOWN_SCOPE"
-			// Incase of unknown scope, try to refresh the cache ansynchronously incase an update was missed or delayed
+			// Incase of unknown scope, try to refresh the
+			// cache ansynchronously incase an update was missed or delayed
 			go createTenantCache()
-			return tenant{}, dbError{ErrorCode: errorCode, Reason: reason}
+			return tenant{}, dbError{
+				ErrorCode: errorCode,
+				Reason:    reason}
 		} else {
 			return ten, dbError{}
 		}
@@ -101,23 +120,32 @@
 		var org, env, tenantId string
 
 		db := getDB()
-		error := db.QueryRow("SELECT env, org, scope FROM DATA_SCOPE where id = ?", scopeuuid).Scan(&env, &org, &tenantId)
+		error := db.QueryRow("SELECT env, org, scope FROM DATA_SCOPE"+
+			" where id = ?", scopeuuid).Scan(&env, &org, &tenantId)
 
 		switch {
 		case error == sql.ErrNoRows:
 			reason := "No tenant found for this scopeuuid: " + scopeuuid
 			errorCode := "UNKNOWN_SCOPE"
-			return tenant{}, dbError{ErrorCode: errorCode, Reason: reason}
+			return tenant{}, dbError{
+				ErrorCode: errorCode,
+				Reason:    reason}
 		case error != nil:
 			reason := error.Error()
 			errorCode := "INTERNAL_SEARCH_ERROR"
-			return tenant{}, dbError{ErrorCode: errorCode, Reason: reason}
+			return tenant{}, dbError{
+				ErrorCode: errorCode,
+				Reason:    reason}
 		}
-		return tenant{Org: org, Env: env, TenantId: tenantId}, dbError{}
+		return tenant{
+			Org:      org,
+			Env:      env,
+			TenantId: tenantId}, dbError{}
 	}
 }
 
-// Returns Dveloper related info given an apiKey and tenantId from the cache or by querying the DB directly based on useCachig config
+// Returns Dveloper related info given an apiKey and tenantId
+// from the cache or by querying the DB directly based on useCachig config
 func getDeveloperInfo(tenantId string, apiKey string) developerInfo {
 	if config.GetBool(useCaching) {
 		keyForMap := getKeyForDeveloperInfoCache(tenantId, apiKey)
@@ -126,15 +154,18 @@
 		defer tenantCachelock.RUnlock()
 		devInfo, exists := developerInfoCache[keyForMap]
 		if !exists {
-			log.Warnf("No data found for for tenantId = %s and apiKey = %s", tenantId, apiKey)
-			// Incase of unknown apiKey~tenantId, try to refresh the cache ansynchronously incase an update was missed or delayed
+			log.Warnf("No data found for for tenantId = %s"+
+				" and apiKey = %s", tenantId, apiKey)
+			// Incase of unknown apiKey~tenantId,
+			// try to refresh the cache ansynchronously incase an update was missed or delayed
 			go createTenantCache()
 			return developerInfo{}
 		} else {
 			return devInfo
 		}
 	} else {
-		var apiProduct, developerApp, developerEmail, developer sql.NullString
+		var apiProduct, developerApp, developerEmail sql.NullString
+		var developer sql.NullString
 
 		db := getDB()
 		sSql := "SELECT ap.name, a.name, d.username, d.email " +
@@ -143,14 +174,18 @@
 			"INNER JOIN APP AS a ON a.id = mp.app_id " +
 			"INNER JOIN DEVELOPER as d ON d.id = a.developer_id " +
 			"where mp.tenant_id = ? and mp.appcred_id = ?;"
-		error := db.QueryRow(sSql, tenantId, apiKey).Scan(&apiProduct, &developerApp, &developer, &developerEmail)
+		error := db.QueryRow(sSql, tenantId, apiKey).
+			Scan(&apiProduct, &developerApp,
+				&developer, &developerEmail)
 
 		switch {
 		case error == sql.ErrNoRows:
-			log.Debugf("No data found for for tenantId = %s and apiKey = %s", tenantId, apiKey)
+			log.Debugf("No data found for for tenantId = %s "+
+				"and apiKey = %s", tenantId, apiKey)
 			return developerInfo{}
 		case error != nil:
-			log.Debugf("No data found for for tenantId = %s and apiKey = %s due to: %v", tenantId, apiKey, error)
+			log.Debugf("No data found for for tenantId = %s and "+
+				"apiKey = %s due to: %v", tenantId, apiKey, error)
 			return developerInfo{}
 		}
 
@@ -158,7 +193,10 @@
 		devApp := getValuesIgnoringNull(developerApp)
 		dev := getValuesIgnoringNull(developer)
 		devEmail := getValuesIgnoringNull(developerEmail)
-		return developerInfo{ApiProduct: apiPrd, DeveloperApp: devApp, DeveloperEmail: devEmail, Developer: dev}
+		return developerInfo{ApiProduct: apiPrd,
+			DeveloperApp:   devApp,
+			DeveloperEmail: devEmail,
+			Developer:      dev}
 	}
 }
 
diff --git a/crash_recovery.go b/crash_recovery.go
index b34dc9d..ccd3b36 100644
--- a/crash_recovery.go
+++ b/crash_recovery.go
@@ -11,15 +11,18 @@
 )
 
 const (
-	crashRecoveryDelay = 30                   // seconds
-	recoveryTSLayout   = "20060102150405.000" // same as "yyyyMMddHHmmss.SSS" format (Appended to Recovered folder and file)
-	recoveredTS        = "~recoveredTS~"      // Constant to identify recovered files
+	crashRecoveryDelay = 30 // seconds
+	// same as "yyyyMMddHHmmss.SSS" format (Appended to Recovered folder and file)
+	recoveryTSLayout = "20060102150405.000"
+	// Constant to identify recovered files
+	recoveredTS = "~recoveredTS~"
 )
 
 func initCrashRecovery() {
 	if crashRecoveryNeeded() {
 		timer := time.After(time.Second * crashRecoveryDelay)
-		// Actual recovery of files is attempted asynchronously after a delay to not block the apid plugin from starting up
+		// Actual recovery of files is attempted asynchronously
+		// after a delay to not block the apid plugin from starting up
 		go func() {
 			<-timer
 			performRecovery()
@@ -33,12 +36,14 @@
 	tmpDirRecoveryNeeded := recoverFoldersInTmpDir()
 	needed := tmpDirRecoveryNeeded || recoveredDirRecoveryNeeded
 	if needed {
-		log.Infof("Crash Recovery is needed and will be attempted in %d seconds", crashRecoveryDelay)
+		log.Infof("Crash Recovery is needed and will be "+
+			"attempted in %d seconds", crashRecoveryDelay)
 	}
 	return needed
 }
 
-// If Apid is shutdown or crashes while a file is still open in tmp folder, then the file has partial data.
+// If Apid is shutdown or crashes while a file is still open in tmp folder,
+// then the file has partial data.
 // This partial data can be recoverd.
 func recoverFoldersInTmpDir() bool {
 	tmpRecoveryNeeded := false
@@ -46,13 +51,16 @@
 	recoveryTS := getRecoveryTS()
 	for _, dir := range dirs {
 		tmpRecoveryNeeded = true
-		log.Debugf("Moving directory '%s' from tmp to recovered folder", dir.Name())
+		log.Debugf("Moving directory '%s' from tmp to"+
+			" recovered folder", dir.Name())
 		tmpCompletePath := filepath.Join(localAnalyticsTempDir, dir.Name())
-		newDirName := dir.Name() + recoveredTS + recoveryTS // Eg. org~env~20160101222400~recoveredTS~20160101222612.123
+		// Eg. org~env~20160101222400~recoveredTS~20160101222612.123
+		newDirName := dir.Name() + recoveredTS + recoveryTS
 		recoveredCompletePath := filepath.Join(localAnalyticsRecoveredDir, newDirName)
 		err := os.Rename(tmpCompletePath, recoveredCompletePath)
 		if err != nil {
-			log.Errorf("Cannot move directory '%s' from tmp to recovered folder", dir.Name())
+			log.Errorf("Cannot move directory '%s' "+
+				"from tmp to recovered folder", dir.Name())
 		}
 	}
 	return tmpRecoveryNeeded
@@ -64,8 +72,10 @@
 	return current.Format(recoveryTSLayout)
 }
 
-// If APID is restarted twice immediately such that files have been moved to recovered folder but actual recovery has'nt started or is partially done
-// Then the files will just stay in the recovered dir and need to be recovered again.
+// If APID is restarted twice immediately such that files have been moved to
+// recovered folder but actual recovery has'nt started or is partially done
+// Then the files will just stay in the recovered dir
+// and need to be recovered again.
 func recoverFolderInRecoveredDir() bool {
 	dirs, _ := ioutil.ReadDir(localAnalyticsRecoveredDir)
 	if len(dirs) > 0 {
@@ -88,7 +98,8 @@
 	var bucketRecoveryTS string
 
 	// Parse bucket name to extract recoveryTS and pass it each file to be recovered
-	// Eg. org~env~20160101222400~recoveredTS~20160101222612.123 -> bucketRecoveryTS = _20160101222612.123
+	// Eg. org~env~20160101222400~recoveredTS~20160101222612.123
+	// 			-> bucketRecoveryTS = _20160101222612.123
 	index := strings.Index(dirName, recoveredTS)
 	if index != -1 {
 		bucketRecoveryTS = "_" + dirName[index+len(recoveredTS):]
@@ -104,7 +115,8 @@
 	stagingPath := filepath.Join(localAnalyticsStagingDir, dirName)
 	err := os.Rename(dirBeingRecovered, stagingPath)
 	if err != nil {
-		log.Errorf("Cannot move directory '%s' from recovered to staging folder", dirName)
+		log.Errorf("Cannot move directory '%s' from"+
+			" recovered to staging folder", dirName)
 	}
 }
 
@@ -123,7 +135,8 @@
 	deletePartialFile(completeOrigFilePath)
 }
 
-// The file is read line by line and all complete records are extracted and copied to a new file which is closed as a correct gzip file.
+// The file is read line by line and all complete records are extracted
+// and copied to a new file which is closed as a correct gzip file.
 func copyPartialFile(completeOrigFilePath, recoveredFilePath string) {
 	partialFile, err := os.Open(completeOrigFilePath)
 	if err != nil {
@@ -135,7 +148,8 @@
 	bufReader := bufio.NewReader(partialFile)
 	gzReader, err := gzip.NewReader(bufReader)
 	if err != nil {
-		log.Errorf("Cannot create reader on gzip file: %s due to %v", completeOrigFilePath, err)
+		log.Errorf("Cannot create reader on gzip file: %s"+
+			" due to %v", completeOrigFilePath, err)
 		return
 	}
 	defer gzReader.Close()
@@ -143,7 +157,8 @@
 	scanner := bufio.NewScanner(gzReader)
 
 	// Create new file to copy complete records from partial file and upload only a complete file
-	recoveredFile, err := os.OpenFile(recoveredFilePath, os.O_WRONLY|os.O_CREATE, os.ModePerm)
+	recoveredFile, err := os.OpenFile(recoveredFilePath,
+		os.O_WRONLY|os.O_CREATE, os.ModePerm)
 	if err != nil {
 		log.Errorf("Cannot create recovered file: %s", recoveredFilePath)
 		return
diff --git a/init.go b/init.go
index e383f16..a3501a4 100644
--- a/init.go
+++ b/init.go
@@ -21,18 +21,21 @@
 	analyticsCollectionInterval        = "apidanalytics_collection_interval"
 	analyticsCollectionIntervalDefault = "120"
 
-	// Interval in seconds based on which staging directory will be checked for folders ready to be uploaded
+	// Interval in seconds based on which staging directory
+	// will be checked for folders ready to be uploaded
 	analyticsUploadInterval        = "apidanalytics_upload_interval"
 	analyticsUploadIntervalDefault = "5"
 
-	// Number of slots for internal channel buffering of analytics records before they are dumped to a file
+	// Number of slots for internal channel buffering of
+	// analytics records before they are dumped to a file
 	analyticsBufferChannelSize        = "apidanalytics_buffer_channel_size"
 	analyticsBufferChannelSizeDefault = 100
 
 	// EdgeX endpoint base path to access Uap Collection Endpoint
 	uapServerBase = "apidanalytics_uap_server_base"
 
-	// If caching is used then data scope and developer info will be maintained in-memory
+	// If caching is used then data scope and developer
+	// info will be maintained in-memory
 	// cache to avoid DB calls for each analytics message
 	useCaching        = "apidanalytics_use_caching"
 	useCachingDefault = true
@@ -90,25 +93,33 @@
 
 	for _, key := range []string{uapServerBase} {
 		if !config.IsSet(key) {
-			return pluginData, fmt.Errorf("Missing required config value: %s", key)
+			return pluginData,
+				fmt.Errorf("Missing required config value: %s", key)
 		}
 	}
 
 	// Create directories for managing buffering and upload to UAP stages
-	directories := []string{localAnalyticsBaseDir, localAnalyticsTempDir, localAnalyticsStagingDir, localAnalyticsFailedDir, localAnalyticsRecoveredDir}
+	directories := []string{localAnalyticsBaseDir,
+		localAnalyticsTempDir,
+		localAnalyticsStagingDir,
+		localAnalyticsFailedDir,
+		localAnalyticsRecoveredDir}
 	err = createDirectories(directories)
 
 	if err != nil {
-		return pluginData, fmt.Errorf("Cannot create required local directories: %v ", err)
+		return pluginData, fmt.Errorf("Cannot create "+
+			"required local directories: %v ", err)
 	}
 
 	// Initialize one time crash recovery to be performed by the plugin on start up
 	initCrashRecovery()
 
-	// Initialize upload manager to watch the staging directory and upload files to UAP as they are ready
+	// Initialize upload manager to watch the staging directory and
+	// upload files to UAP as they are ready
 	initUploadManager()
 
-	// Initialize buffer manager to watch the internalBuffer channel for new messages and dump them to files
+	// Initialize buffer manager to watch the internalBuffer channel
+	// for new messages and dump them to files
 	initBufferingManager()
 
 	// Initialize API's and expose them
@@ -129,7 +140,8 @@
 	}
 
 	// set local directory paths that will be used to buffer analytics data on disk
-	localAnalyticsBaseDir = filepath.Join(config.GetString("local_storage_path"), config.GetString(configAnalyticsDataPath))
+	localAnalyticsBaseDir = filepath.Join(config.GetString("local_storage_path"),
+		config.GetString(configAnalyticsDataPath))
 	localAnalyticsTempDir = filepath.Join(localAnalyticsBaseDir, "tmp")
 	localAnalyticsStagingDir = filepath.Join(localAnalyticsBaseDir, "staging")
 	localAnalyticsFailedDir = filepath.Join(localAnalyticsBaseDir, "failed")
@@ -158,7 +170,8 @@
 			if error != nil {
 				return error
 			}
-			log.Infof("created directory for analytics data collection: %s", path)
+			log.Infof("created directory for analytics "+
+				"data collection: %s", path)
 		}
 	}
 	return nil
diff --git a/listener.go b/listener.go
index f86b2ad..e320fed 100644
--- a/listener.go
+++ b/listener.go
@@ -27,7 +27,8 @@
 }
 
 func processSnapshot(snapshot *common.Snapshot) {
-	log.Debugf("Snapshot received. Switching to DB version: %s", snapshot.SnapshotInfo)
+	log.Debugf("Snapshot received. Switching to"+
+		" DB version: %s", snapshot.SnapshotInfo)
 
 	db, err := data.DBVersion(snapshot.SnapshotInfo)
 	if err != nil {
@@ -40,7 +41,8 @@
 		if err != nil {
 			log.Error(err)
 		} else {
-			log.Debug("Created a local cache for datasope information")
+			log.Debug("Created a local cache" +
+				" for datasope information")
 		}
 		err = createDeveloperInfoCache()
 		if err != nil {
@@ -49,7 +51,8 @@
 			log.Debug("Created a local cache for developer information")
 		}
 	} else {
-		log.Info("Will not be caching any developer info and make a DB call for every analytics msg")
+		log.Info("Will not be caching any developer info " +
+			"and make a DB call for every analytics msg")
 	}
 	return
 }
@@ -66,32 +69,44 @@
 				switch payload.Operation {
 				case common.Insert, common.Update:
 					rows = append(rows, payload.NewRow)
-					// Lock before writing to the map as it has multiple readers
+					// Lock before writing to the
+					// map as it has multiple readers
 					tenantCachelock.Lock()
 					defer tenantCachelock.Unlock()
 					for _, ele := range rows {
-						var scopeuuid, tenantid, org, env string
+						var scopeuuid, tenantid string
+						var org, env string
 						ele.Get("id", &scopeuuid)
 						ele.Get("scope", &tenantid)
 						ele.Get("org", &org)
 						ele.Get("env", &env)
-						tenantCache[scopeuuid] = tenant{Org: org, Env: env, TenantId: tenantid}
-						log.Debugf("Refreshed local tenantCache. Added scope: %s", scopeuuid)
+						tenantCache[scopeuuid] = tenant{
+							Org:      org,
+							Env:      env,
+							TenantId: tenantid}
+						log.Debugf("Refreshed local "+
+							"tenantCache. Added "+
+							"scope: "+"%s", scopeuuid)
 					}
 				case common.Delete:
 					rows = append(rows, payload.OldRow)
-					// Lock before writing to the map as it has multiple readers
+					// Lock before writing to the map
+					// as it has multiple readers
 					tenantCachelock.Lock()
 					defer tenantCachelock.Unlock()
 					for _, ele := range rows {
 						var scopeuuid string
 						ele.Get("id", &scopeuuid)
 						delete(tenantCache, scopeuuid)
-						log.Debugf("Refreshed local tenantCache. Deleted scope: %s", scopeuuid)
+						log.Debugf("Refreshed local"+
+							" tenantCache. Deleted"+
+							" scope: %s", scopeuuid)
 					}
 				}
-			case "kms.developer", "kms.app", "kms.api_product", "kms.app_credential_apiproduct_mapper":
-				// any change in any of the above tables should result in cache refresh
+			case "kms.developer", "kms.app", "kms.api_product",
+				"kms.app_credential_apiproduct_mapper":
+				// any change in any of the above tables
+				// should result in cache refresh
 				createDeveloperInfoCache()
 				log.Debug("Refresh local developerInfoCache")
 			}
diff --git a/upload_manager.go b/upload_manager.go
index 1ae94a5..a95ce87 100644
--- a/upload_manager.go
+++ b/upload_manager.go
@@ -12,25 +12,32 @@
 	retryFailedDirBatchSize = 10
 )
 
-// Each file upload is retried maxRetries times before moving it to failed directory
+// Each file upload is retried maxRetries times before
+// moving it to failed directory
 var retriesMap map[string]int
 
-//TODO:  make sure that this instance gets initialized only once since we dont want multiple upload manager tickers running
+//TODO:  make sure that this instance gets initialized only once
+// since we dont want multiple upload manager tickers running
 func initUploadManager() {
 
 	retriesMap = make(map[string]int)
 
 	go func() {
-		// Periodically check the staging directory to check if any folders are ready to be uploaded to S3
-		ticker := time.NewTicker(time.Second * config.GetDuration(analyticsUploadInterval))
+		// Periodically check the staging directory to check
+		// if any folders are ready to be uploaded to S3
+		ticker := time.NewTicker(time.Second *
+			config.GetDuration(analyticsUploadInterval))
 		log.Debugf("Intialized upload manager to check for staging directory")
-		defer ticker.Stop() // Ticker will keep running till go routine is running i.e. till application is running
+		// Ticker will keep running till go routine is running
+		// i.e. till application is running
+		defer ticker.Stop()
 
 		for range ticker.C {
 			files, err := ioutil.ReadDir(localAnalyticsStagingDir)
 
 			if err != nil {
-				log.Errorf("Cannot read directory: %s", localAnalyticsStagingDir)
+				log.Errorf("Cannot read directory: "+
+					"%s", localAnalyticsStagingDir)
 			}
 
 			uploadedDirCnt := 0
@@ -44,7 +51,8 @@
 				}
 			}
 			if uploadedDirCnt > 0 {
-				// After a successful upload, retry the folders in failed directory as they might have
+				// After a successful upload, retry the
+				// folders in failed directory as they might have
 				// failed due to intermitent S3/GCS issue
 				retryFailedUploads()
 			}
@@ -54,10 +62,12 @@
 
 func handleUploadDirStatus(dir os.FileInfo, status bool) {
 	completePath := filepath.Join(localAnalyticsStagingDir, dir.Name())
-	// If upload is successful then delete files and remove bucket from retry map
+	// If upload is successful then delete files
+	// and remove bucket from retry map
 	if status {
 		os.RemoveAll(completePath)
-		log.Debugf("deleted directory after successful upload: %s", dir.Name())
+		log.Debugf("deleted directory after "+
+			"successful upload: %s", dir.Name())
 		// remove key if exists from retry map after a successful upload
 		delete(retriesMap, dir.Name())
 	} else {
@@ -67,7 +77,8 @@
 			failedDirPath := filepath.Join(localAnalyticsFailedDir, dir.Name())
 			err := os.Rename(completePath, failedDirPath)
 			if err != nil {
-				log.Errorf("Cannot move directory '%s' from staging to failed folder", dir.Name())
+				log.Errorf("Cannot move directory '%s'"+
+					" from staging to failed folder", dir.Name())
 			}
 			// remove key from retry map once it reaches allowed max failed attempts
 			delete(retriesMap, dir.Name())
@@ -90,7 +101,8 @@
 			newStagingPath := filepath.Join(localAnalyticsStagingDir, dir.Name())
 			err := os.Rename(failedPath, newStagingPath)
 			if err != nil {
-				log.Errorf("Cannot move directory '%s' from failed to staging folder", dir.Name())
+				log.Errorf("Cannot move directory '%s'"+
+					" from failed to staging folder", dir.Name())
 			}
 		} else {
 			break
diff --git a/uploader.go b/uploader.go
index a8292a3..fb8a267 100644
--- a/uploader.go
+++ b/uploader.go
@@ -16,7 +16,8 @@
 var token string
 
 var client *http.Client = &http.Client{
-	Timeout: time.Duration(60 * time.Second), //set default timeout of 60 seconds while connecting to s3/GCS
+	//set default timeout of 60 seconds while connecting to s3/GCS
+	Timeout: time.Duration(60 * time.Second),
 }
 
 func addHeaders(req *http.Request) {
@@ -27,7 +28,8 @@
 func uploadDir(dir os.FileInfo) bool {
 	// Eg. org~env~20160101224500
 	tenant, timestamp := splitDirName(dir.Name())
-	dateTimePartition := getDateFromDirTimestamp(timestamp) //date=2016-01-01/time=22-45
+	//date=2016-01-01/time=22-45
+	dateTimePartition := getDateFromDirTimestamp(timestamp)
 
 	completePath := filepath.Join(localAnalyticsStagingDir, dir.Name())
 	files, _ := ioutil.ReadDir(completePath)
@@ -43,7 +45,8 @@
 			break
 		} else {
 			os.Remove(completeFilePath)
-			log.Debugf("Deleted file '%s' after successful upload", file.Name())
+			log.Debugf("Deleted file '%s' after "+
+				"successful upload", file.Name())
 		}
 	}
 	return status
@@ -90,7 +93,8 @@
 		signedURL := body["url"]
 		return signedURL.(string), nil
 	} else {
-		return "", fmt.Errorf("Error while getting signed URL '%v'", resp.Status)
+		return "", fmt.Errorf("Error while getting "+
+			"signed URL '%v'", resp.Status)
 	}
 }
 
@@ -112,7 +116,8 @@
 
 	fileStats, err := file.Stat()
 	if err != nil {
-		return false, fmt.Errorf("Could not get content length for file '%v'", err)
+		return false, fmt.Errorf("Could not get content length for "+
+			"file '%v'", err)
 	}
 	req.ContentLength = fileStats.Size()
 
@@ -125,7 +130,8 @@
 	if resp.StatusCode == 200 {
 		return true, nil
 	} else {
-		return false, fmt.Errorf("Final Datastore (S3/GCS)returned Error '%v'", resp.Status)
+		return false, fmt.Errorf("Final Datastore (S3/GCS)returned "+
+			"Error '%v'", resp.Status)
 	}
 }
 
@@ -137,7 +143,8 @@
 	return tenant, timestamp
 }
 
-// files are uploaded to S3 under specific date time partition and that key needs to be generated from the plugin
+// files are uploaded to S3 under specific date time partition and that
+// key needs to be generated from the plugin
 // eg. <...prefix generated by uap collection service...>/date=2016-01-02/time=15-45/filename.txt.gz
 func getDateFromDirTimestamp(timestamp string) string {
 	dateTime, _ := time.Parse(timestampLayout, timestamp)