diff --git a/internal/core/sadis_if.go b/internal/core/sadis_if.go
index 60514c8..e2c1083 100644
--- a/internal/core/sadis_if.go
+++ b/internal/core/sadis_if.go
@@ -102,11 +102,11 @@
 	CBS int    `json:"cbs"`
 	CIR int    `json:"cir"`
 	// MEF attributes
-	AIR int    `json:"air,omitempty"`
-	EBS int    `json:"ebs,omitempty"`
-	EIR int    `json:"eir,omitempty"`
+	AIR int `json:"air,omitempty"`
+	EBS int `json:"ebs,omitempty"`
+	EIR int `json:"eir,omitempty"`
 	// IETF attributes
-	GIR int    `json:"gir,omitempty"`
-	PIR int    `json:"pir,omitempty"`
-	PBS int    `json:"pbs,omitempty"`
+	GIR int `json:"gir,omitempty"`
+	PIR int `json:"pir,omitempty"`
+	PBS int `json:"pbs,omitempty"`
 }
diff --git a/internal/core/store_test.go b/internal/core/store_test.go
index 0896b6d..5b55967 100644
--- a/internal/core/store_test.go
+++ b/internal/core/store_test.go
@@ -23,7 +23,7 @@
 	"testing"
 )
 
-func init()  {
+func init() {
 	SetupLogger(log.ErrorLevel, "console")
 }
 
@@ -31,7 +31,7 @@
 	store := NewStore()
 
 	bp := SadisBWPEntry{
-		ID: "test-bp",
+		ID:  "test-bp",
 		AIR: 20,
 	}
 
diff --git a/internal/core/watcher.go b/internal/core/watcher.go
index ba9b5f8..0a952dc 100644
--- a/internal/core/watcher.go
+++ b/internal/core/watcher.go
@@ -92,48 +92,34 @@
 			}
 
 			logger.Debugw(ctx, "received-event-for-bbsim-pod", log.Fields{"pod": pod.Name, "namespace": pod.Namespace,
-				"release": pod.Labels["release"], "ready": ready})
+				"release": pod.Labels["release"], "ready": ready, "podIp": pod.Status.PodIP})
 
 			// as soon as the pod is ready cache the sadis entries
 			if ready {
-				// note that we should one service
-				labelSelector := fmt.Sprintf("app=bbsim,release=%s", pod.Labels["release"])
-				services, err := w.client.CoreV1().Services(pod.Namespace).List(context.TODO(), metav1.ListOptions{LabelSelector: labelSelector})
-
-				if err != nil {
-					logger.Fatalw(ctx, "error-while-listing-services", log.Fields{"err": err})
+				if err := w.queryPod(ctx, pod.Status.PodIP, 0); err != nil {
+					logger.Errorw(ctx, "failed-to-load-sadis-config-from-bbsim",
+						log.Fields{"pod": pod.Name, "namespace": pod.Namespace, "release": pod.Labels["release"], "err": err})
 				}
-
-				w.handleServices(ctx, services)
 			}
 		}
 
 	}
 }
 
-func (w *Watcher) handleServices(ctx context.Context, services *v1.ServiceList) {
-	// TODO if a service is removed we'll want to remove the related entries
-	for _, service := range services.Items {
-		go func(service v1.Service) {
-			if err := w.queryService(ctx, service, 0); err != nil {
-				logger.Errorw(ctx, "error-while-reading-from-service", log.Fields{"error": err.Error()})
-			}
-		}(service)
-	}
-}
-
-func (w *Watcher) queryService(ctx context.Context, service v1.Service, attempt int) error {
-	endpoint := fmt.Sprintf("%s.%s.svc:%d", service.Name, service.Namespace, w.config.BBsimSadisPort)
+func (w *Watcher) queryPod(ctx context.Context, ip string, attempt int) error {
+	endpoint := fmt.Sprintf("%s:%d", ip, w.config.BBsimSadisPort)
 	logger.Infow(ctx, "querying-service", log.Fields{"endpoint": endpoint})
 
-	res, err := http.Get(fmt.Sprintf("http://%s/v2/static", endpoint))
+	client := http.Client{Timeout: 5 * time.Second}
+
+	res, err := client.Get(fmt.Sprintf("http://%s/v2/static", endpoint))
 
 	if err != nil {
 		if attempt < attemptLimit {
 			logger.Warnw(ctx, "error-while-reading-from-service-retrying", log.Fields{"error": err.Error()})
 			// if there is an error and we have attempt left just retry later
 			time.Sleep(1 * time.Second)
-			return w.queryService(ctx, service, attempt+1)
+			return w.queryPod(ctx, ip, attempt+1)
 		}
 
 		return err
@@ -157,19 +143,6 @@
 		"bandwidthProfiles": len(result.BandwidthProfile.Entries),
 	})
 
-	//for _, entry := range result.Sadis.Entries {
-	//	switch entry.(type) {
-	//	case SadisOltEntry:
-	//	case *SadisOltEntry:
-	//		logger.Infow(ctx, "olt-entry", log.Fields{"entry": entry})
-	//	case SadisOnuEntryV2:
-	//	case *SadisOnuEntryV2:
-	//		logger.Infow(ctx, "onu-entry", log.Fields{"entry": entry})
-	//	default:
-	//		logger.Warnw(ctx, "unknown-entity", log.Fields{"entry": entry})
-	//	}
-	//}
-
 	for _, entry := range result.Sadis.Entries {
 		if entry.HardwareIdentifier != "" {
 			e := SadisOltEntry{
