diff --git a/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java b/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java
index 4559ef9..1db0ef7 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/ScrCommand.java
@@ -330,10 +330,10 @@
             if ( services != null )
             {
                 out.print( "  Services: " );
-                for ( int i = 1; i < services.length; i++ )
+                for ( String service: services )
                 {
                     out.print( "          " );
-                    out.println( services[i] );
+                    out.println( service );
                 }
                 out.print( "  Service Scope: " );
                 out.println( component.scope );
@@ -426,21 +426,21 @@
             out.println( ref.name );
             out.print( "      Target: " );
             out.println( ref.target );
-          ServiceReferenceDTO[] serviceRefs = ref.boundServices;
-          if ( serviceRefs != null )
-          {
-              out.print( "      Bound to:" );
-              for ( ServiceReferenceDTO sr: serviceRefs )
-              {
-                  out.print( "        " );
-                  out.println( sr.id );
-                  propertyInfo(sr.properties, out, "        ");
-              }
-          }
-          else
-          {
-              out.println( "      (unbound)" );
-          }
+            ServiceReferenceDTO[] serviceRefs = ref.boundServices;
+            if ( serviceRefs != null )
+            {
+                out.print( "      Bound to:" );
+                for ( ServiceReferenceDTO sr: serviceRefs )
+                {
+                    out.print( "        " );
+                    out.println( sr.id );
+                    propertyInfo(sr.properties, out, "        ");
+                }
+            }
+            else
+            {
+                out.println( "      (unbound)" );
+            }
 
         }
         for ( UnsatisfiedReferenceDTO ref: cc.unsatisfiedReferences)
@@ -449,20 +449,20 @@
             out.println( ref.name );
             out.print( "      Target: " );
             out.println( ref.target );
-          ServiceReferenceDTO[] serviceRefs = ref.targetServices;
-          if ( serviceRefs != null )
-          {
-              out.print( "      Target services:" );
-              for ( ServiceReferenceDTO sr: serviceRefs )
-              {
-                  out.print( "        " );
-                  out.println( sr.id );
-              }
-          }
-          else
-          {
-              out.println( "      (unbound)" );
-          }
+            ServiceReferenceDTO[] serviceRefs = ref.targetServices;
+            if ( serviceRefs != null )
+            {
+                out.print( "      Target services:" );
+                for ( ServiceReferenceDTO sr: serviceRefs )
+                {
+                    out.print( "        " );
+                    out.println( sr.id );
+                }
+            }
+            else
+            {
+                out.println( "      (unbound)" );
+            }
 
         }
         propertyInfo( cc.properties, out, "    ");
