diff --git a/address_utils/address_utils.go b/address_utils/address_utils.go
index f955fedcfd195a81ef7474cfd02eded969a92521..f8c5556b68cb4daae53d889fc3a8730260fd22fe 100644
--- a/address_utils/address_utils.go
+++ b/address_utils/address_utils.go
@@ -8,7 +8,7 @@ import (
 	"strings"
 )
 
-// MD5HashOfAddress calculates and returns the MD5 hash of the entered address, lat and lng concatenated together. If lat and lng is blank, it is only the hash of the entered address
+// MD5HashOfAddress m(E,L,L) - calculates and returns the MD5 hash of the entered address, lat and lng concatenated together. If lat and lng is blank, it is only the hash of the entered address
 func MD5HashOfAddress(enteredAddress string, lat *float64, lng *float64) string {
 	valueToHash := enteredAddress
 	if lat != nil && lng != nil {
@@ -18,7 +18,7 @@ func MD5HashOfAddress(enteredAddress string, lat *float64, lng *float64) string
 	return fmt.Sprintf("%X", md5.Sum([]byte(valueToHash)))
 }
 
-// MD5HashOfLowerCaseEnteredAddress calculates and returns the MD5 hash of a string after preparing the string properly.
+// MD5HashOfLowerCaseEnteredAddress m(e) - calculates and returns the MD5 hash of a string after preparing the string properly.
 func MD5HashOfLowerCaseEnteredAddress(enteredAddress string) string {
 	valueToHash := cleanLowerCaseAddress(enteredAddress)
 	return fmt.Sprintf("%X", md5.Sum([]byte(valueToHash)))
diff --git a/string_utils/string_utils.go b/string_utils/string_utils.go
index 5ae232bb71d807655058f012b0e33b5073f19f33..1331c4722e7ec6bb7770109fd54250ffe1e1b549 100644
--- a/string_utils/string_utils.go
+++ b/string_utils/string_utils.go
@@ -1,6 +1,8 @@
 package string_utils
 
 import (
+	"encoding/json"
+	"fmt"
 	"golang.org/x/text/runes"
 	"golang.org/x/text/transform"
 	"golang.org/x/text/unicode/norm"
@@ -82,4 +84,87 @@ func UnwrapString(s *string) string {
 		return ""
 	}
 	return *s
+}
+
+//trim specified strings, replacing empty string with nil
+func TrimP(sp *string) *string {
+	if sp == nil {
+		return nil
+	}
+	s := strings.TrimSpace(*sp)
+	if s == "" {
+		return nil
+	}
+	return &s
+}
+
+//concatenate all specified non-empty strings with ", " separators
+func ConcatP(args ...*string) string {
+	s := ""
+	for _, arg := range args {
+		if args != nil && *arg != "" {
+			if s != "" {
+				s += ", "
+			}
+			s += *arg
+		}
+	}
+	return s
+}
+
+
+func ToJSONString(object interface{}) (string, error) {
+	jsonBytes, err := json.Marshal(&object)
+	if err != nil {
+		return "", err
+	}
+	return string(jsonBytes), nil
+}
+
+func Int64ToString(number int64) string {
+	return strconv.FormatInt(number, 10)
+}
+
+func IntToString(number int) string {
+	return strconv.Itoa(number)
+}
+
+func Int64SliceToString(numbers []int64) string {
+	numString := fmt.Sprint(numbers)
+	numString = strings.Join(strings.Split(numString, " "), ",")
+	return numString
+}
+
+func StringToInt64(stringValue string) (int64, error) {
+	number, err := strconv.ParseInt(stringValue, 10, 64)
+	return number, err
+}
+
+func StringToFloat64(stringValue string) (float64, error) {
+	number, err := strconv.ParseFloat(stringValue, 64)
+	if err != nil {
+		return 0, err
+	}
+	return number, nil
+}
+
+func Float64ToString(number float64, precision int) string {
+	return strconv.FormatFloat(number, 'f', precision, 64)
+}
+
+func Float64ToStringWithPrec(number float64, prec int) string {
+	return strconv.FormatFloat(number, 'f', prec, 64)
+}
+
+func ValidateStringAsInt64(stringValue string) error {
+	_, err := StringToInt64(stringValue)
+	return err
+}
+
+func PtoString(stringPointer *string) string {
+	if stringPointer == nil {
+		return ""
+	}
+
+	return *stringPointer
 }
\ No newline at end of file