diff --git a/netman.py b/netman.py
index 3978cef..38ee9d3 100755
--- a/netman.py
+++ b/netman.py
@@ -20,14 +20,16 @@
         'bus_name' : 'org.freedesktop.network1',
         'ip_object_name' : '/org/freedesktop/network1/network/default',
         'hw_object_name' : '/org/freedesktop/network1/link/_31',
-        'interface_name' : 'org.freedesktop.network1.Network',
+        'ip_if_name' : 'org.freedesktop.network1.Network',
+        'hw_if_name' : 'org.freedesktop.network1.Link',
         'method' : 'org.freedesktop.network1.Network.SetAddr'
     },
     'NetworkManager' : {
         'bus_name' : 'org.freedesktop.NetworkManager',
         'ip_object_name' : '/org/freedesktop/NetworkManager',
         'hw_object_name' : '/org/freedesktop/NetworkManager',
-        'interface_name' : 'org.freedesktop.NetworkManager',
+        'ip_if_name' : 'org.freedesktop.NetworkManager',
+        'hw_if_name' : 'org.freedesktop.NetworkManager',
         'method' : 'org.freedesktop.NetworkManager' # FIXME: 
     },  
 }
@@ -58,7 +60,7 @@
         netprov     = network_providers [self.provider]
         bus_name    = netprov ['bus_name']
         obj_path    = netprov ['ip_object_name']
-        intf_name   = netprov ['interface_name']
+        intf_name   = netprov ['ip_if_name']
 
         obj = self.bus.get_object(bus_name, obj_path)
         intf = dbus.Interface(obj, intf_name)
@@ -73,14 +75,14 @@
         bus_name    = netprov ['bus_name']
 
         if (target == "ip"):
-            intf_name   = 'org.freedesktop.network1.Network'
+            intf_name   = netprov ['ip_if_name'] #'org.freedesktop.network1.Network'
             obj_path    = netprov ['ip_object_name']
             obj = self.bus.get_object(bus_name, obj_path)
             intf = dbus.Interface(obj, intf_name)
             return intf.GetAddress (device)
 
         if (target == "mac"):
-            intf_name   = 'org.freedesktop.network1.Link'
+            intf_name   = netprov ['hw_if_name'] #'org.freedesktop.network1.Link'
             obj_path    = netprov ['hw_object_name']
             obj = self.bus.get_object(bus_name, obj_path)
             intf = dbus.Interface(obj, intf_name)
@@ -88,12 +90,30 @@
             print mac
             return mac
 
-
-
     @dbus.service.method(DBUS_NAME, "", "")
     def test(self):
         print("TEST")
 
+    @dbus.service.method(DBUS_NAME, "s", "x")
+    def EnableDHCP (self, device):
+        confFile = "/etc/systemd/network/10-bmc-" + device + ".network"
+        if os.path.exists(confFile):
+            return 0
+
+        print("Making .network file...")
+        networkconf = open (confFile, "w+") 
+        networkconf.write ('[Match]'+ '\n')
+        networkconf.write ('Name=' + (device) + '\n')
+        networkconf.write ('[Network]' + '\n')
+        networkconf.write ('DHCP=yes')
+        networkconf.close ()
+
+        print("Restarting networkd service...")
+        call(["ip", "addr", "flush", device])
+        call(["systemctl", "restart", "systemd-networkd.service"])
+        return 0
+        #return self._setAddr ("add", device, ipaddr, netmask, 2, 0, 253, gateway)
+
     @dbus.service.method(DBUS_NAME, "ssss", "x")
     def AddAddress4 (self, device, ipaddr, netmask, gateway):
         prefixLen = getPrefixLen (netmask)
@@ -149,4 +169,3 @@
 
 if __name__ == '__main__':
     sys.exit(main())
-
