diff --git a/roc.py b/roc.py
index ede71f7..fe328aa 100644
--- a/roc.py
+++ b/roc.py
@@ -113,12 +113,11 @@
         return json.loads(response.text)['ip-domain']
 
     def get_devices(self):
-        imsis = {}
-        devicegroups = self.get_devicegroups()
-        for devicegroup in devicegroups:
-            for device in devicegroup['imsis']:
-                imsis[device['imsi-id']] = device['imsi-range-from']
-        return imsis
+        devices = {}
+        for dg in self.get_devicegroups():
+            for d in dg['imsis']:
+                devices[d['imsi-id']] = d['imsi-range-from']
+        return devices
 
     def update_devices(self, devices):
         dgs = self.get_devicegroups()
