diff --git a/roc.py b/roc.py
index fd45701..9d9478f 100644
--- a/roc.py
+++ b/roc.py
@@ -98,7 +98,7 @@
         if response.status_code != 200:
             log.error("get_devicegroup() failed, status_code: {}".format(response.status_code))
             return None
-        return json.loads(response.text)
+        return json.loads(response.text)['device-group']
 
     def get_ipdomain(self):
         url = URL + "ip-domain"
@@ -106,7 +106,31 @@
         if response.status_code != 200:
             log.error("get_ipdomain() failed, status_code: {}".format(response.status_code))
             return None
-        return json.loads(response.text)
+        return json.loads(response.text)['ip-domain']
+
+    def get_imsi(self):
+        imsis = {} # imsi-id:imsi
+        devicegroups = self.get_devicegroup()
+        for devicegroup in devicegroups:
+            for imsi in devicegroup['imsis']:
+                imsis[imsi['imsi-id']] = imsi['imsi-range-from']
+        return imsis
+
+    def get_subnet(self):
+        subnets = {}
+        ip_domains = self.get_ipdomain()
+        for ip_domain in ip_domains:
+            subnets[ip_domain['id']] = ip_domain['subnet']
+        return subnets
+
+
+    def dump(self):
+        print(pyaml.dump(self.get_enterprise()))
+        print(pyaml.dump(self.get_site()))
+        print(pyaml.dump(self.get_upf()))
+        print(pyaml.dump(self.get_devicegroup()))
+        print(pyaml.dump(self.get_ipdomain()))
+
 
 
 if __name__ == '__main__':
