diff --git a/gnmiserver/model.go b/gnmiserver/model.go
index eac83a76127adeb6293edb8ae8f3584112647a61..55ae7e6ae9e276de68d91cec63bf79406666587c 100644
--- a/gnmiserver/model.go
+++ b/gnmiserver/model.go
@@ -65,9 +65,9 @@ func (m *Model) NewConfigStruct(jsonConfig []byte) (ygot.ValidatedGoStruct, erro
 		if err := m.jsonUnmarshaler(jsonConfig, rootStruct); err != nil {
 			return nil, err
 		}
-		if err := rootStruct.ΛValidate(); err != nil {
-			return nil, err
-		}
+		//if err := rootStruct.ΛValidate(); err != nil {
+		//	return nil, err
+		//}
 	}
 	return rootStruct, nil
 }
diff --git a/os_clients/ubuntu/supportedPaths.go b/os_clients/ubuntu/supportedPaths.go
index b72a0cececa9fd811215686e9278005410fa0273..934a30de3a51591f30673a6f015ce7b83aa1384f 100644
--- a/os_clients/ubuntu/supportedPaths.go
+++ b/os_clients/ubuntu/supportedPaths.go
@@ -3,21 +3,23 @@ package ubuntu
 import (
 	"fmt"
 	"net"
+	"syscall"
 
 	"code.fbi.h-da.de/danet/gnmi-target/modeldata/gnmitargetygot"
 	osc "code.fbi.h-da.de/danet/gnmi-target/os_clients"
 	"github.com/openconfig/gnmi/proto/gnmi"
 	"github.com/openconfig/ygot/util"
+	"github.com/openconfig/ygot/ygot"
 	"github.com/vishvananda/netlink"
 )
 
 var supportedPaths = map[string]osc.PathFunc{
 	"/system/config/hostname": func(path *gnmi.Path, val *gnmi.TypedValue) error {
-		//value, err := value.ToScalar(val)
+		//value, err := value.toscalar(val)
 		//if err != nil {
 		//	return err
 		//}
-		//err = syscall.Sethostname([]byte(value.(string)))
+		//err = syscall.sethostname([]byte(value.(string)))
 		//if err != nil {
 		//	return err
 		//}
@@ -71,7 +73,8 @@ var supportedPaths = map[string]osc.PathFunc{
 	},
 }
 
-func walkThroughConfig(config any) error {
+// NOTE: playing around -> don't mind me
+func walkThroughConfig(config ygot.ValidatedGoStruct) error {
 	conf, ok := config.(*gnmitargetygot.Gnmitarget)
 	if !ok {
 		return fmt.Errorf("failed type assertion for %T", (*gnmitargetygot.Gnmitarget)(nil))
@@ -90,6 +93,17 @@ func walkThroughConfig(config any) error {
 			}
 		}
 	}
+
+	if system := conf.System; system != nil {
+		if config := system.Config; config != nil {
+			if hostname := config.Hostname; hostname != nil {
+				err := syscall.Sethostname([]byte(*hostname))
+				if err != nil {
+					return err
+				}
+			}
+		}
+	}
 	if networkInstances := conf.NetworkInstances; networkInstances != nil {
 		if networkInstanceMap := networkInstances.NetworkInstance; networkInstanceMap != nil {
 			for _, networkInstance := range networkInstanceMap {
@@ -126,8 +140,7 @@ func generateSubinterface(subintf *gnmitargetygot.OpenconfigInterfaces_Interface
 		if !util.IsValueNil(addr.Config.Ip) && !util.IsValueNil(addr.Config.PrefixLength) {
 			netlinkAddr := &netlink.Addr{
 				IPNet: &net.IPNet{
-					IP: net.ParseIP(*addr.Config.Ip),
-					// just for testing should come from other path
+					IP:   net.ParseIP(*addr.Config.Ip),
 					Mask: net.CIDRMask(int(*addr.Config.PrefixLength), 32),
 				},
 			}
@@ -144,8 +157,10 @@ func generateSubinterface(subintf *gnmitargetygot.OpenconfigInterfaces_Interface
 }
 
 func generateProtocol(protocol *gnmitargetygot.OpenconfigNetworkInstance_NetworkInstances_NetworkInstance_Protocols_Protocol) error {
-	for _, staticRoute := range protocol.StaticRoutes.Static {
+	staticRoutes := protocol.StaticRoutes
+	for _, staticRoute := range staticRoutes.Static {
 		prefix := staticRoute.Prefix
+
 		for _, hop := range staticRoute.NextHops.NextHop {
 			link, err := netlink.LinkByName(*hop.InterfaceRef.Config.Interface)
 			if err != nil {
@@ -154,26 +169,31 @@ func generateProtocol(protocol *gnmitargetygot.OpenconfigNetworkInstance_Network
 					return err
 				}
 			}
-			source := &net.IPNet{
-				IP:   net.IPv4(0, 0, 0, 0),
-				Mask: net.CIDRMask(32, 32),
-			}
-
-			source := net.ParseIP()
 
-			dst := &net.IPNet{
-				IP:   net.ParseIP(),
-				Mask: net.CIDRMask(32, 32),
+			ipnet, err := CIDRToIPNet(*prefix)
+			if err != nil {
+				return err
 			}
 
-			route = netlink.Route{LinkIndex: link.Attrs().Index, Dst: dst, Src: source}
+			nextHop := net.ParseIP(hop.GetConfig().GetIndex())
+
+			route := netlink.Route{LinkIndex: link.Attrs().Index, Dst: ipnet, Src: nextHop}
 			netlink.RouteAdd(&route)
 		}
 	}
-
 	return nil
 }
 
+func CIDRToIPNet(s string) (*net.IPNet, error) {
+	ip, ipnet, err := net.ParseCIDR(s)
+	if err != nil {
+		return nil, err
+	}
+	ipnet.IP = ip
+	return ipnet, nil
+
+}
+
 func filterKeys(path *gnmi.Path) []map[string]string {
 	keyMap := make([]map[string]string, 0)
 	for _, p := range path.GetElem() {
diff --git a/os_clients/ubuntu/ubuntu.go b/os_clients/ubuntu/ubuntu.go
index 5e4dba38de431b8bec6f928b35c004850c8b9910..fa89914d8cb2f386c7ecf0a13f06f910bf40ed86 100644
--- a/os_clients/ubuntu/ubuntu.go
+++ b/os_clients/ubuntu/ubuntu.go
@@ -1,7 +1,6 @@
 package ubuntu
 
 import (
-	"fmt"
 	"net"
 	"os"
 	"os/exec"
@@ -52,6 +51,8 @@ func (ou *OsclientUbuntu) GetConfig() *gnmitargetygot.Gnmitarget {
 
 	ou.getSystem(ou.gt)
 
+	ou.getStaticRoutes(ou.gt)
+
 	return ou.gt
 }
 
@@ -63,32 +64,33 @@ func (ou *OsclientUbuntu) callbackFunc(config ygot.ValidatedGoStruct) error {
 	//opts := []ygot.DiffOpt{
 	//	&ygot.DiffPathOpt{MapToSinglePath: true},
 	//}
-	diffs, err := ygot.Diff(ou.GetConfig(), config)
-	if err != nil {
-		return err
-	}
+	//diffs, err := ygot.Diff(ou.GetConfig(), config)
+	//if err != nil {
+	//	return err
+	//}
 
-	for _, path := range diffs.GetDelete() {
-		stringPath, err := ygot.PathToString(path)
-		if err != nil {
-			return err
-		}
-		fmt.Println("PathToDelete: ", stringPath)
-	}
-	for _, diff := range diffs.GetUpdate() {
-		schemaPath, err := ygot.PathToSchemaPath(diff.GetPath())
-		if err != nil {
-			return err
-		}
-		if fn, found := ou.pm[schemaPath]; found {
-			if err := fn(diff.GetPath(), diff.GetVal()); err != nil {
-				return err
-			}
-		} else {
-			//ignore all other paths for now
-			return fmt.Errorf("the path: %s is not supported", schemaPath)
-		}
-	}
+	//for _, path := range diffs.GetDelete() {
+	//	stringPath, err := ygot.PathToString(path)
+	//	if err != nil {
+	//		return err
+	//	}
+	//	fmt.Println("PathToDelete: ", stringPath)
+	//}
+	//for _, diff := range diffs.GetUpdate() {
+	//	schemaPath, err := ygot.PathToSchemaPath(diff.GetPath())
+	//	if err != nil {
+	//		return err
+	//	}
+	//	if fn, found := ou.pm[schemaPath]; found {
+	//		if err := fn(diff.GetPath(), diff.GetVal()); err != nil {
+	//			return err
+	//		}
+	//	} else {
+	//		//ignore all other paths for now
+	//		return fmt.Errorf("the path: %s is not supported", schemaPath)
+	//	}
+	//}
+	walkThroughConfig(config)
 	return nil
 }
 
@@ -226,6 +228,23 @@ func (ou *OsclientUbuntu) getSystem(gt *gnmitargetygot.Gnmitarget) {
 	}
 }
 
+func (ou *OsclientUbuntu) getStaticRoutes(gt *gnmitargetygot.Gnmitarget) {
+	networkInstances := gt.GetOrCreateNetworkInstances()
+
+	defaultNetworkInstance := networkInstances.GetOrCreateNetworkInstance("default")
+
+	defaultProtocols := defaultNetworkInstance.GetOrCreateProtocols()
+
+	defaultProtocol := defaultProtocols.GetOrCreateProtocol(gnmitargetygot.OpenconfigPolicyTypes_INSTALL_PROTOCOL_TYPE_DIRECTLY_CONNECTED, "DIRECTLY_CONNECTED")
+	defaultProtocolStaticRoutes := defaultProtocol.GetOrCreateStaticRoutes()
+	defaultProtocolStaticRoute := defaultProtocolStaticRoutes.GetOrCreateStatic("10.10.10.1/24")
+	defaultNextHops := defaultProtocolStaticRoute.GetOrCreateNextHops()
+	defaultNextHop := defaultNextHops.GetOrCreateNextHop("AUTO_1_10-0-0-1")
+	defaultInterfaceRef := defaultNextHop.GetOrCreateInterfaceRef()
+	defaultInterfaceRefConf := defaultInterfaceRef.GetOrCreateConfig()
+	defaultInterfaceRefConf.Interface = ygot.String("eth0")
+}
+
 //TODO: this will be removed in the near future
 //func (ou OsclientUbuntu) TestUbuntu() {
 //	ou.gt = &gnmitargetygot.Gnmitarget{}