diff --git a/app.py b/app.py
index cb8bedb..c3e3238 100644
--- a/app.py
+++ b/app.py
@@ -3,6 +3,8 @@
 SPDX-License-Identifier: LicenseRef-ONF-Member-1.01
 """
 import sys
+import re
+from datetime import datetime
 
 from flask import Flask, request
 from flask_restful import Resource, Api
@@ -10,24 +12,30 @@
 from argparse import ArgumentParser, SUPPRESS
 
 from roc import Roc
+from prom import Prometheus
+from ping import ping
+import device
 
 app = Flask(__name__)
 api = Api(app)
 
-global roc
+devices = {} # dict imsi:device
 
 
-class Imsi(Resource):
+
+class ReachableDevices(Resource):
     def get(self):
-        return roc.get_imsi()
+        global devices
+        return device.get_reachable(devices)
 
-class Subnet(Resource):
+class UnreachableDevices(Resource):
     def get(self):
-        return roc.get_subnet()
+        global devices
+        return device.get_unreachable(devices)
 
 
-api.add_resource(Imsi, '/imsi')
-api.add_resource(Subnet, '/subnet')
+api.add_resource(ReachableDevices, '/reachable-devices')
+api.add_resource(UnreachableDevices, '/unreachable-devices')
 
 
 def build_argparser():
@@ -43,6 +51,9 @@
     args.add_argument("--password",
                       help="ROC password",
                       type=str)
+    args.add_argument("--token",
+                      help="Rancher bearer token",
+                      type=str)
     return parser
 
 
@@ -58,7 +69,22 @@
     args = build_argparser().parse_args()
 
     roc = Roc(args.user, args.password)
-    #roc.dump()
-    print(roc.get_imsi())
+    prom = Prometheus(args.token.split(':')[0], args.token.split(':')[1])
+
+    roc.update_devices(devices)
+
+    prom.update_devices(devices)
+
+    for imsi_id, device in devices.items():
+        if device.ip is None:
+            continue
+        if ping(device.ip):
+            device.reachable = True
+            device.last_reachable = datetime.now()
+            log.info("{}/{}/{} - reachable".format(device.imsi_id, device.imsi, device.ip))
+        else:
+            device.reachable = False
+            log.info("{}/{}/{} - unreachable".format(device.imsi_id, device.imsi, device.ip))
+
 
     app.run('0.0.0.0', '3333')
