diff --git a/nucleus/util/convert.go b/nucleus/util/convert.go
index 1c98020ed65dd3d16603e4b788668f5ab11982fd..ba49998313fb6ab965f3139c8b5773b6ebcbe1b1 100644
--- a/nucleus/util/convert.go
+++ b/nucleus/util/convert.go
@@ -2,95 +2,74 @@ package util
 
 import (
 	"fmt"
-	gpb "github.com/openconfig/gnmi/proto/gnmi"
+	"strconv"
+
+	"github.com/openconfig/gnmi/proto/gnmi"
 	gnmiv "github.com/openconfig/gnmi/value"
 	"github.com/openconfig/goyang/pkg/yang"
-	"strconv"
 )
 
 // ConvertStringToTypedValue takes a value as string and a YangType. The
 // returned value is the converted TypedValue of the given string based on the
 // given YangType.
-func ConvertStringToTypedValue(s string, t *yang.YangType) (*gpb.TypedValue, error) {
+func ConvertStringToTypedValue(s string, t *yang.YangType) (*gnmi.TypedValue, error) {
 	// TODO: add more types
 	switch t.Kind {
 	case yang.Yint8:
-		parsedInt, err := strconv.ParseInt(s, 10, 8)
-		if err != nil {
-			return nil, err
-		}
-		tv, err := gnmiv.FromScalar(int8(parsedInt))
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return convertStringToIntTypedValue(s, 10, 8)
 	case yang.Yint16:
-		parsedInt, err := strconv.ParseInt(s, 10, 16)
-		if err != nil {
-			return nil, err
-		}
-		tv, err := gnmiv.FromScalar(int16(parsedInt))
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return convertStringToIntTypedValue(s, 10, 16)
 	case yang.Yint32:
-		parsedInt, err := strconv.ParseInt(s, 10, 32)
-		if err != nil {
-			return nil, err
-		}
-		tv, err := gnmiv.FromScalar(int32(parsedInt))
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return convertStringToIntTypedValue(s, 10, 32)
 	case yang.Yuint8:
-		parsedInt, err := strconv.ParseUint(s, 10, 8)
-		if err != nil {
-			return nil, err
-		}
-		tv, err := gnmiv.FromScalar(uint8(parsedInt))
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return convertStringToUintTypedValue(s, 10, 8)
 	case yang.Yuint16:
-		parsedInt, err := strconv.ParseUint(s, 10, 16)
-		if err != nil {
-			return nil, err
-		}
-		tv, err := gnmiv.FromScalar(uint16(parsedInt))
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return convertStringToUintTypedValue(s, 10, 16)
 	case yang.Yuint32:
-		parsedInt, err := strconv.ParseUint(s, 10, 32)
-		if err != nil {
-			return nil, err
-		}
-		tv, err := gnmiv.FromScalar(uint32(parsedInt))
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return convertStringToUintTypedValue(s, 10, 32)
 	case yang.Ybool:
 		parsedBool, err := strconv.ParseBool(s)
 		if err != nil {
 			return nil, err
 		}
-		tv, err := gnmiv.FromScalar(parsedBool)
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return gnmiv.FromScalar(parsedBool)
 	case yang.Ystring:
-		tv, err := gnmiv.FromScalar(s)
-		if err != nil {
-			return nil, err
-		}
-		return tv, nil
+		return gnmiv.FromScalar(s)
+	default:
+		return nil, fmt.Errorf("could not convert to TypedValue, unsupported type of: %v", t)
+	}
+}
+
+func convertStringToIntTypedValue(s string, base int, bitSize int) (*gnmi.TypedValue, error) {
+	parsedInt, err := strconv.ParseInt(s, base, bitSize)
+	if err != nil {
+		return nil, err
+	}
+	switch bitSize {
+	case 8:
+		return gnmiv.FromScalar(int8(parsedInt))
+	case 16:
+		return gnmiv.FromScalar(int16(parsedInt))
+	case 32:
+		return gnmiv.FromScalar(int32(parsedInt))
+	default:
+		return nil, fmt.Errorf("could not convert string %s to a gnmi.TypedValue (int), unsupported bitSize of: %d", s, bitSize)
+	}
+}
+
+func convertStringToUintTypedValue(s string, base int, bitSize int) (*gnmi.TypedValue, error) {
+	parsedInt, err := strconv.ParseUint(s, base, bitSize)
+	if err != nil {
+		return nil, err
+	}
+	switch bitSize {
+	case 8:
+		return gnmiv.FromScalar(uint8(parsedInt))
+	case 16:
+		return gnmiv.FromScalar(uint16(parsedInt))
+	case 32:
+		return gnmiv.FromScalar(uint32(parsedInt))
 	default:
-		return nil, fmt.Errorf("unsupported type to convert to TypedValue")
+		return nil, fmt.Errorf("could not convert string %s to a gnmi.TypedValue (uint), unsupported bitSize of: %d", s, bitSize)
 	}
 }