diff --git a/pkg/eventlistener/event-listener.go b/pkg/eventlistener/event-listener.go
index 13c8055..5f1ef51 100644
--- a/pkg/eventlistener/event-listener.go
+++ b/pkg/eventlistener/event-listener.go
@@ -68,7 +68,7 @@ type Resource struct {
 type CallbackFn func(Event, interface{}) error
 
 // RestClientFn will be used to get a REST request
-type RestClientFn func(clientset *kubernetes.Clientset) *rest.Request
+type RestClientFn func(clientset *kubernetes.Clientset) rest.Interface
 
 // NewEventListener returns a pointer to EventListener
 func NewEventListener(ctx context.Context, kubeConfig, kubeContext string, errHandler func(error), logLevel string) *EventListener {
@@ -109,7 +109,7 @@ func (e *EventListener) Init() (err error) {
 
 // Listen for incoming events from a kubernetes instance
 func (e *EventListener) Listen(resource *Resource) (err error) {
-	listWatcher := e.newFilteredListWatchFromClient(resource.RestClient(e.clientSet), fields.Everything())
+	listWatcher := e.newFilteredListWatchFromClient(resource.RestClient(e.clientSet), resource.ResourceName, fields.Everything())
 
 	queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
 
@@ -161,14 +161,15 @@ func (e *EventListener) getKubeConfig() (config *rest.Config, err error) {
 	).ClientConfig()
 }
 
-func (e *EventListener) newFilteredListWatchFromClient(r *rest.Request, fieldSelector fields.Selector) *cache.ListWatch {
+func (e *EventListener) newFilteredListWatchFromClient(c cache.Getter, resource string, fieldSelector fields.Selector) *cache.ListWatch {
 	optionsModifier := func(options *metav1.ListOptions) {
 		options.FieldSelector = fieldSelector.String()
 	}
 
 	listFunc := func(options metav1.ListOptions) (runtime.Object, error) {
 		optionsModifier(&options)
-		return r.
+		return c.Get().
+			Resource(resource).
 			VersionedParams(&options, metav1.ParameterCodec).
 			Do().
 			Get()
@@ -176,7 +177,8 @@ func (e *EventListener) newFilteredListWatchFromClient(r *rest.Request, fieldSel
 	watchFunc := func(options metav1.ListOptions) (watch.Interface, error) {
 		options.Watch = true
 		optionsModifier(&options)
-		return r.
+		return c.Get().
+			Resource(resource).
 			VersionedParams(&options, metav1.ParameterCodec).
 			Watch()
 	}
diff --git a/pkg/resource/ingress.go b/pkg/resource/ingress.go
index 7ab81ef..beb09fd 100644
--- a/pkg/resource/ingress.go
+++ b/pkg/resource/ingress.go
@@ -18,8 +18,8 @@ func getIngress() resourceType {
 		fn: func(callback string) (r *eventlistener.Resource, e error) {
 			r = &eventlistener.Resource{}
 			r.ResourceName = "ingresses"
-			r.RestClient = func(clientset *kubernetes.Clientset) *rest.Request {
-				return clientset.NetworkingV1beta1().RESTClient().Get().Resource(r.ResourceName)
+			r.RestClient = func(clientset *kubernetes.Clientset) rest.Interface {
+				return clientset.NetworkingV1beta1().RESTClient()
 			}
 			r.ResourceType = &v1beta1.Ingress{}
 			r.Callback = createCallbackFn(
diff --git a/pkg/resource/pod.go b/pkg/resource/pod.go
index f56255c..98c52cc 100644
--- a/pkg/resource/pod.go
+++ b/pkg/resource/pod.go
@@ -19,8 +19,8 @@ func getPod() resourceType {
 		fn: func(callback string) (r *eventlistener.Resource, e error) {
 			r = &eventlistener.Resource{}
 			r.ResourceName = "pods"
-			r.RestClient = func(clientset *kubernetes.Clientset) *rest.Request {
-				return clientset.CoreV1().RESTClient().Get().Resource(r.ResourceName)
+			r.RestClient = func(clientset *kubernetes.Clientset) rest.Interface {
+				return clientset.CoreV1().RESTClient()
 			}
 			r.ResourceType = &v1.Pod{}
 			r.Callback = createCallbackFn(
diff --git a/pkg/resource/serviceaccount.go b/pkg/resource/serviceaccount.go
index 4b64e9d..ef6a29c 100644
--- a/pkg/resource/serviceaccount.go
+++ b/pkg/resource/serviceaccount.go
@@ -19,8 +19,8 @@ func getServiceAccount() resourceType {
 		fn: func(callback string) (r *eventlistener.Resource, e error) {
 			r = &eventlistener.Resource{}
 			r.ResourceName = "serviceaccounts"
-			r.RestClient = func(clientset *kubernetes.Clientset) *rest.Request {
-				return clientset.CoreV1().RESTClient().Get().Resource(r.ResourceName)
+			r.RestClient = func(clientset *kubernetes.Clientset) rest.Interface {
+				return clientset.CoreV1().RESTClient()
 			}
 			r.ResourceType = &v1.ServiceAccount{}
 			r.Callback = createCallbackFn(