diff --git a/framework/src/main/java/org/apache/felix/framework/resolver/Candidates.java b/framework/src/main/java/org/apache/felix/framework/resolver/Candidates.java
index 57b974a..484bec2 100644
--- a/framework/src/main/java/org/apache/felix/framework/resolver/Candidates.java
+++ b/framework/src/main/java/org/apache/felix/framework/resolver/Candidates.java
@@ -478,9 +478,6 @@
         BundleRequirement req, SortedSet<BundleCapability> candidates)
     {
         // Add the dynamic imports candidates.
-// TODO: OSGi R4.3 - Can we just calculate the candidates inside here too?
-//       I think we don't because of performance reasons since we have to
-//       look them up already. If so, maybe it is not worth doing it here.
         add(req, candidates);
 
         // Populate the candidates for the dynamic import.
diff --git a/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java b/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
index 9cad608..cb2e751 100644
--- a/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/resolver/ResolverImpl.java
@@ -212,9 +212,8 @@
                 for (Iterator<BundleRevision> it = revisions.iterator(); it.hasNext(); )
                 {
                     BundleRevision br = it.next();
-// TODO: OSGi R4.3 - This is not correct for fragments, since they may have wires already
-//       but we still need to resolve them.
-                    if ((br.getWiring() != null) || !allCandidates.populate(state, br, false))
+                    if ((!Util.isFragment(br) && br.getWiring() != null)
+                        || !allCandidates.populate(state, br, false))
                     {
                         it.remove();
                     }
@@ -230,14 +229,14 @@
                 allCandidates.prepare(getResolvedSingletons(state));
 
                 // Prune failed revisions.
-// TODO: OSGi R4.3 - Again, can we merge this stuff into Candidates?
-//                for (Iterator<BundleRevision> it = revisions.iterator(); it.hasNext(); )
-//                {
-//                    if (!allCandidates.isPopulated(it.next()))
-//                    {
-//                        it.remove();
-//                    }
-//                }
+// TODO: OSGi R4.3 - Could this be merged back into Candidates?
+                for (Iterator<BundleRevision> it = revisions.iterator(); it.hasNext(); )
+                {
+                    if (!allCandidates.isPopulated(it.next()))
+                    {
+                        it.remove();
+                    }
+                }
 
                 // Record the initial candidate permutation.
                 m_usesPermutations.add(allCandidates);
