diff --git a/component-dsl/src/main/java/org/apache/aries/component/dsl/OSGi.java b/component-dsl/src/main/java/org/apache/aries/component/dsl/OSGi.java
index d13185d..b935efa 100644
--- a/component-dsl/src/main/java/org/apache/aries/component/dsl/OSGi.java
+++ b/component-dsl/src/main/java/org/apache/aries/component/dsl/OSGi.java
@@ -534,19 +534,20 @@
 	static <T> OSGi<CachingServiceReference<T>> serviceReferences(
 		Class<T> clazz) {
 
-		return new ServiceReferenceOSGi<>(null, clazz);
+		return serviceReferences(clazz, (String)null);
 	}
 
 	static OSGi<CachingServiceReference<Object>> serviceReferences(
 		String filterString) {
 
-		return new ServiceReferenceOSGi<>(filterString, null);
+		return serviceReferences(null, filterString);
 	}
 
 	static <T> OSGi<CachingServiceReference<T>> serviceReferences(
 		Class<T> clazz, String filterString) {
 
-		return new ServiceReferenceOSGi<>(filterString, clazz);
+		return serviceReferences(
+			clazz, filterString, CachingServiceReference::isDirty);
 	}
 
 	static <T> OSGi<CachingServiceReference<T>> serviceReferences(
@@ -554,7 +555,7 @@
 		Refresher<? super CachingServiceReference<T>> onModified) {
 
 		return refreshWhen(
-			serviceReferences(clazz, filterString),
+			new ServiceReferenceOSGi<>(clazz, filterString),
 			onModified::test);
 
 	}
diff --git a/component-dsl/src/main/java/org/apache/aries/component/dsl/internal/ServiceReferenceOSGi.java b/component-dsl/src/main/java/org/apache/aries/component/dsl/internal/ServiceReferenceOSGi.java
index d93904f..998bbae 100644
--- a/component-dsl/src/main/java/org/apache/aries/component/dsl/internal/ServiceReferenceOSGi.java
+++ b/component-dsl/src/main/java/org/apache/aries/component/dsl/internal/ServiceReferenceOSGi.java
@@ -30,7 +30,7 @@
 public class ServiceReferenceOSGi<T>
 	extends OSGiImpl<CachingServiceReference<T>> {
 
-	public ServiceReferenceOSGi(String filterString, Class<T> clazz) {
+	public ServiceReferenceOSGi(Class<T> clazz, String filterString) {
 
 		super((executionContext, op) -> {
 			ServiceTracker<T, Tracked<T>>
diff --git a/component-dsl/src/main/java/org/apache/aries/component/dsl/services/ServiceReferences.java b/component-dsl/src/main/java/org/apache/aries/component/dsl/services/ServiceReferences.java
index 4dc59d0..cc2886f 100644
--- a/component-dsl/src/main/java/org/apache/aries/component/dsl/services/ServiceReferences.java
+++ b/component-dsl/src/main/java/org/apache/aries/component/dsl/services/ServiceReferences.java
@@ -26,19 +26,19 @@
     static <T> OSGi<CachingServiceReference<T>> withUpdate(
         Class<T> clazz) {
 
-        return new ServiceReferenceOSGi<>(null, clazz);
+        return new ServiceReferenceOSGi<>(clazz, null);
     }
 
     static OSGi<CachingServiceReference<Object>> withUpdate(
         String filterString) {
 
-        return new ServiceReferenceOSGi<>(filterString, null);
+        return new ServiceReferenceOSGi<>(null, filterString);
     }
 
     static <T> OSGi<CachingServiceReference<T>> withUpdate(
         Class<T> clazz, String filterString) {
 
-        return new ServiceReferenceOSGi<>(filterString, clazz);
+        return new ServiceReferenceOSGi<>(clazz, filterString);
     }
 
 }
