diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/AdminCommandSupport.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/AdminCommandSupport.java
index fa45e41..955ddfb 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/AdminCommandSupport.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/AdminCommandSupport.java
@@ -19,6 +19,7 @@
 import org.apache.felix.karaf.gshell.admin.AdminService;
 import org.apache.felix.karaf.gshell.admin.Instance;
 import org.apache.felix.karaf.gshell.console.OsgiCommandSupport;
+import org.apache.felix.gogo.commands.Command;
 
 public abstract class AdminCommandSupport extends OsgiCommandSupport {
 
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ChangePortCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ChangePortCommand.java
index 08706af..15b1a52 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ChangePortCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ChangePortCommand.java
@@ -17,7 +17,9 @@
 package org.apache.felix.karaf.gshell.admin.internal.commands;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "admin", name = "change-port", description = "Change the port of an existing instance.")
 public class ChangePortCommand extends AdminCommandSupport {
 
     @Argument(index=0, required=true, description="The instance name")
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ConnectCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ConnectCommand.java
index 6c112ad..35e8158 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ConnectCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ConnectCommand.java
@@ -20,7 +20,9 @@
 
 import org.apache.felix.gogo.commands.Option;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "admin", name = "connect", description = "Connect to an existing instance.")
 public class ConnectCommand extends AdminCommandSupport {
 
     @Argument(index=0, name="INSTANCE", required=true, description="The instance name")
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java
index abf306e..c134984 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.java
@@ -18,6 +18,7 @@
 
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Option;
+import org.apache.felix.gogo.commands.Command;
 
 
 /**
@@ -25,6 +26,7 @@
  *
  * @version $Rev: 679826 $ $Date: 2008-07-25 17:00:12 +0200 (Fri, 25 Jul 2008) $
  */
+@Command(scope = "admin", name = "create", description = "Create a new instance.")
 public class CreateCommand extends AdminCommandSupport
 {
     @Option(name = "-p", aliases = { "--port"}, description = "Port number for remote shell connection")
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java
index 34f23c1..2580b27 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.java
@@ -17,12 +17,14 @@
 package org.apache.felix.karaf.gshell.admin.internal.commands;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
 /**
  * Destroy an existing Karaf instance
  *
  * @version $Rev: 679826 $ $Date: 2008-07-25 17:00:12 +0200 (Fri, 25 Jul 2008) $
  */
+@Command(scope = "admin", name = "destroy", description = "Destroy an existing instance.")
 public class DestroyCommand extends AdminCommandSupport
 {
     @Argument(index=0, required=true, description="The name of the Karaf instance to destroy")
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ListCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ListCommand.java
index eb4a118..2287d9d 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ListCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/ListCommand.java
@@ -17,11 +17,13 @@
 package org.apache.felix.karaf.gshell.admin.internal.commands;
 
 import org.apache.felix.gogo.commands.Option;
+import org.apache.felix.gogo.commands.Command;
 import org.apache.felix.karaf.gshell.admin.Instance;
 
 /**
  * List available instances
  */
+@Command(scope = "admin", name = "list", description = "List existing instances.")
 public class ListCommand extends AdminCommandSupport {
 
     @Option(name = "-l", aliases = { "--location" }, description = "Display instances location")
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StartCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StartCommand.java
index dfd8068..ea2d7a5 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StartCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StartCommand.java
@@ -18,7 +18,9 @@
 
 import org.apache.felix.gogo.commands.Option;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "admin", name = "start", description = "Start an existing instance.")
 public class StartCommand extends AdminCommandSupport {
 
     @Option(name = "-o", aliases = { "--java-opts"}, description = "Java options when launching the instance")
diff --git a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StopCommand.java b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StopCommand.java
index 4f80645..b15131a 100644
--- a/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StopCommand.java
+++ b/karaf/gshell/gshell-admin/src/main/java/org/apache/felix/karaf/gshell/admin/internal/commands/StopCommand.java
@@ -17,7 +17,9 @@
 package org.apache.felix.karaf.gshell.admin.internal.commands;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "admin", name = "stop", description = "Stop an existing instance.")
 public class StopCommand extends AdminCommandSupport {
 
     @Argument(index=0, required=true, description="The instance name")
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ChangePortCommand.properties b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ChangePortCommand.properties
deleted file mode 100644
index f3d9a09..0000000
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ChangePortCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Change the port of an existing instance.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ConnectCommand.properties b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ConnectCommand.properties
deleted file mode 100644
index 9c022ac..0000000
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ConnectCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Connect to an existing instance.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.properties b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.properties
deleted file mode 100644
index 12e0f3b..0000000
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/CreateCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Create a new instance.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.properties b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.properties
deleted file mode 100644
index 68a1568..0000000
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/DestroyCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Destroy an existing instance.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ListCommand.properties b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ListCommand.properties
deleted file mode 100644
index 08ad892..0000000
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/ListCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=List existing instances.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/StartCommand.properties b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/StartCommand.properties
deleted file mode 100644
index 1da68f1..0000000
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/StartCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Start an existing instance.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/StopCommand.properties b/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/StopCommand.properties
deleted file mode 100644
index 3c324d8..0000000
--- a/karaf/gshell/gshell-admin/src/main/resources/org/apache/felix/karaf/gshell/admin/internal/commands/StopCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Stop an existing instance.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java
index f6b3ff0..79a4643 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/CancelCommand.java
@@ -17,7 +17,9 @@
 package org.apache.felix.karaf.gshell.config;
 
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "config", name = "cancel", description = "Cancel the changes to the configuration being edited.")
 public class CancelCommand extends ConfigCommandSupport {
 
     protected void doExecute(ConfigurationAdmin admin) throws Exception {
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java
index 268bc63..b458b2b 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/EditCommand.java
@@ -21,8 +21,10 @@
 
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Option;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.service.cm.ConfigurationAdmin;
 
+@Command(scope = "config", name = "edit", description = "Create or edit a configuration.")
 public class EditCommand extends ConfigCommandSupport {
 
     @Argument(required = true, description = "PID of the configuration")
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java
index 0e24271..1eac7dd 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/ListCommand.java
@@ -22,7 +22,9 @@
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "config", name = "list", description = "List existing configurations.")
 public class ListCommand extends ConfigCommandSupport {
 
     @Argument(required = false, description = "LDAP query")
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java
index 1db7a95..7cbc6f4 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropAppendCommand.java
@@ -19,11 +19,13 @@
 import java.util.Dictionary;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.service.cm.ConfigurationAdmin;
 
 /**
  * Appends a value to the current property value.
  */
+@Command(scope = "config", name = "propappend", description = "Append the given value to an existing property or create the property with the specified value.")
 public class PropAppendCommand extends ConfigCommandSupport {
 
     @Argument(index = 0, required = true, description = "the property to set")
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java
index 5c3a59c..753865b 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropDelCommand.java
@@ -19,8 +19,10 @@
 import java.util.Dictionary;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.service.cm.ConfigurationAdmin;
 
+@Command(scope = "config", name = "propdel", description = "Delete a property from the edited configuration.")
 public class PropDelCommand extends ConfigCommandSupport {
 
     @Argument(name = "prop", index = 0, required = true, description = "the property to delete")
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java
index c5a8893..d1eec28 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropListCommand.java
@@ -20,7 +20,9 @@
 import java.util.Enumeration;
 
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "config", name = "proplist", description = "List properties from the edited configuration.")
 public class PropListCommand extends ConfigCommandSupport {
 
     protected void doExecute(ConfigurationAdmin admin) throws Exception {
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java
index 6ce4e25..0f98861 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/PropSetCommand.java
@@ -19,8 +19,10 @@
 import java.util.Dictionary;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.service.cm.ConfigurationAdmin;
 
+@Command(scope = "config", name = "propset", description = "Set a property on the edited configuration.")
 public class PropSetCommand extends ConfigCommandSupport {
 
     @Argument(index = 0, required = true, description = "the property to set")
diff --git a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java
index 02b504a..535b3ad 100644
--- a/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java
+++ b/karaf/gshell/gshell-config/src/main/java/org/apache/felix/karaf/gshell/config/UpdateCommand.java
@@ -20,7 +20,9 @@
 
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "config", name = "update", description = "Save and propagate changes from the configuration being edited.")
 public class UpdateCommand extends ConfigCommandSupport {
 
     protected void doExecute(ConfigurationAdmin admin) throws Exception {
diff --git a/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml b/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml
index da7e2bf..5239584 100644
--- a/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml
+++ b/karaf/gshell/gshell-config/src/main/resources/OSGI-INF/blueprint/gshell-config.xml
@@ -51,6 +51,13 @@
                 <null/>
             </completers>
         </command>
+        <command name="config/propappend">
+            <action class="org.apache.felix.karaf.gshell.config.PropAppendCommand"/>
+            <completers>
+                <ref component-id="configPropertyCompleter" />
+                <null/>
+            </completers>
+        </command>
         <command name="config/update">
             <action class="org.apache.felix.karaf.gshell.config.UpdateCommand"/>
         </command>
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/CancelCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/CancelCommand.properties
deleted file mode 100644
index fd8147a..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/CancelCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Change the changes to the configuration being edited.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/EditCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/EditCommand.properties
deleted file mode 100644
index c8b769e..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/EditCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Create or edit a configuration.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/ListCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/ListCommand.properties
deleted file mode 100644
index 410eadd..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/ListCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=List existing configurations.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropAppendCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropAppendCommand.properties
deleted file mode 100644
index 87bc54c..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropAppendCommand.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-command.description=Appends a value to the end of an existing property value
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropDelCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropDelCommand.properties
deleted file mode 100644
index 9bc63f0..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropDelCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Delete a property from the edited configuration.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropListCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropListCommand.properties
deleted file mode 100644
index dd609ad..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropListCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=List properties from the edited configuration.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropSetCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropSetCommand.properties
deleted file mode 100644
index 0cf9a23..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/PropSetCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Set a property on the edited configuration.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/UpdateCommand.properties b/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/UpdateCommand.properties
deleted file mode 100644
index 9ab3558..0000000
--- a/karaf/gshell/gshell-config/src/main/resources/org/apache/felix/karaf/gshell/config/UpdateCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Save and propagate changes from the configuration being edited.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-console/src/main/java/org/apache/felix/karaf/gshell/console/commands/BlueprintCommand.java b/karaf/gshell/gshell-console/src/main/java/org/apache/felix/karaf/gshell/console/commands/BlueprintCommand.java
index 30eb423..85b4fe4 100644
--- a/karaf/gshell/gshell-console/src/main/java/org/apache/felix/karaf/gshell/console/commands/BlueprintCommand.java
+++ b/karaf/gshell/gshell-console/src/main/java/org/apache/felix/karaf/gshell/console/commands/BlueprintCommand.java
@@ -19,8 +19,15 @@
 
 import java.lang.reflect.Type;
 import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.Arrays;
+import java.io.PrintStream;
 
 import org.apache.felix.gogo.commands.Action;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
+import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.basic.AbstractCommand;
 import org.apache.felix.gogo.commands.basic.ActionPreparator;
 import org.apache.felix.gogo.commands.basic.DefaultActionPreparator;
@@ -32,6 +39,7 @@
 import org.osgi.service.blueprint.container.BlueprintContainer;
 import org.osgi.service.blueprint.container.Converter;
 import org.osgi.service.command.CommandSession;
+import org.fusesource.jansi.Ansi;
 
 public class BlueprintCommand extends AbstractCommand implements CompletableFunction
 {
@@ -73,6 +81,96 @@
             return blueprintConverter.convert(o, new GenericType(type));
         }
 
+        @Override
+        protected void printUsage(Command command, Set<Option> options, Set<Argument> arguments, PrintStream out)
+        {
+            options = new HashSet<Option>(options);
+            options.add(HELP);
+            if (command != null && (command.description() != null) || command.name() != null)
+            {
+                out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a("DESCRIPTION").a(Ansi.Attribute.RESET));
+                out.print("\t");
+                if (command.name() != null) {
+                    out.println(Ansi.ansi().a(command.scope()).a(":").a(Ansi.Attribute.INTENSITY_BOLD).a(command.name()).a(Ansi.Attribute.RESET));
+                    out.println();
+                }
+                out.print("\t");
+                out.println(command.description());
+                out.println();
+            }
+            String syntax = "";
+            if (command != null)
+            {
+                syntax += command.scope() + ":" + command.name();
+            }
+            if (options.size() > 0)
+            {
+                syntax += " [options]";
+            }
+            if (arguments.size() > 0)
+            {
+                if (arguments.size() > 0) {
+                    syntax += " ";
+                }
+                for (Argument argument : arguments)
+                {
+                    if (argument.required())
+                    {
+                        syntax += "[" + argument.name() + "]";
+                    }
+                    else
+                    {
+                        syntax += argument.name();
+                    }
+                }
+            }
+
+            out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a("SYNTAX").a(Ansi.Attribute.RESET));
+            out.print("\t");
+            out.println(syntax);
+            out.println();
+            if (arguments.size() > 0)
+            {
+                out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a("ARGUMENTS").a(Ansi.Attribute.RESET));
+                for (Argument argument : arguments)
+                {
+                    out.print("\t");
+                    out.print(argument.name());
+                    out.print("\t");
+                    out.print(argument.description());
+                    out.println();
+                }
+                out.println();
+            }
+            if (options.size() > 0)
+            {
+                out.println(Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a("OPTIONS").a(Ansi.Attribute.RESET));
+                for (Option option : options)
+                {
+                    String opt = option.name();
+                    for (String alias : option.aliases())
+                    {
+                        opt += ", " + alias;
+                    }
+                    out.print("\t");
+                    out.println(opt);
+                    out.print("\t\t");
+                    out.print(option.description());
+                    out.println();
+                }
+                out.println();
+            }
+        }
+
+        protected void printFormatted(String prefix, String str, int termWidth, PrintStream out) {
+            int pfxLen = length(prefix);
+            
+        }
+
+        protected int length(String str) {
+            return str.length();
+        }
+
     }
 
     protected Action createNewAction() throws Exception {
diff --git a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/AddUrlCommand.java b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/AddUrlCommand.java
index 230f321..a4ee363 100644
--- a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/AddUrlCommand.java
+++ b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/AddUrlCommand.java
@@ -21,7 +21,9 @@
 
 import org.apache.felix.karaf.gshell.features.FeaturesService;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "features", name = "addUrl", description = "Add a list of repository URLs to the features service.")
 public class AddUrlCommand extends FeaturesCommandSupport {
 
     @Argument(required = true, multiValued = true, description = "Repository URLs")
diff --git a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/InstallFeatureCommand.java b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/InstallFeatureCommand.java
index 8fb99bf..4a25b63 100644
--- a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/InstallFeatureCommand.java
+++ b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/InstallFeatureCommand.java
@@ -18,7 +18,9 @@
 
 import org.apache.felix.karaf.gshell.features.FeaturesService;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "features", name = "install", description = "Install a feature.")
 public class InstallFeatureCommand extends FeaturesCommandSupport {
 
     @Argument(required = true, description = "The name of the feature")
diff --git a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/ListFeaturesCommand.java b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/ListFeaturesCommand.java
index c3495e6..9e2246d 100644
--- a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/ListFeaturesCommand.java
+++ b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/ListFeaturesCommand.java
@@ -18,7 +18,9 @@
 
 import org.apache.felix.karaf.gshell.features.FeaturesService;
 import org.apache.felix.gogo.commands.Option;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "features", name = "list", description = "List existing features.")
 public class ListFeaturesCommand extends FeaturesCommandSupport {
 
     @Option(name = "-i", aliases={"--installed"}, description="Display the list of installed features")
diff --git a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RefreshUrlCommand.java b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RefreshUrlCommand.java
index 5899766..25fe4f4 100644
--- a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RefreshUrlCommand.java
+++ b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RefreshUrlCommand.java
@@ -23,7 +23,9 @@
 import org.apache.felix.karaf.gshell.features.FeaturesService;
 import org.apache.felix.karaf.gshell.features.Repository;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "features", name = "refreshUrl", description = "Reload the repositories to obtain a fresh list of features.")
 public class RefreshUrlCommand extends FeaturesCommandSupport {
 
     @Argument(required = false, multiValued = true, description = "Repository URLs (leave empty for all)")
diff --git a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RemoveUrlCommand.java b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RemoveUrlCommand.java
index 3ff088a..8157deb 100644
--- a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RemoveUrlCommand.java
+++ b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/RemoveUrlCommand.java
@@ -21,7 +21,9 @@
 
 import org.apache.felix.karaf.gshell.features.FeaturesService;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "features", name = "removeUrl", description = "Remove a list of repository URLs from the features service.")
 public class RemoveUrlCommand extends FeaturesCommandSupport {
 
     @Argument(required = true, multiValued = true, description = "Repository URLs")
diff --git a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/UninstallFeatureCommand.java b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/UninstallFeatureCommand.java
index bdee5da..b0c172e 100644
--- a/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/UninstallFeatureCommand.java
+++ b/karaf/gshell/gshell-features/src/main/java/org/apache/felix/karaf/gshell/features/commands/UninstallFeatureCommand.java
@@ -18,7 +18,9 @@
 
 import org.apache.felix.karaf.gshell.features.FeaturesService;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "features", name = "uninstall", description = "Uninstall a feature.")
 public class UninstallFeatureCommand extends FeaturesCommandSupport {
 
     @Argument(required = true, description = "The name of the feature")
diff --git a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/AddUrlCommand.properties b/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/AddUrlCommand.properties
deleted file mode 100644
index b6f01a4..0000000
--- a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/AddUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Add a list of repository URLs to the features service.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/InstallFeatureCommand.properties b/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/InstallFeatureCommand.properties
deleted file mode 100644
index 020d3df..0000000
--- a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/InstallFeatureCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Install a feature.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/ListFeaturesCommand.properties b/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/ListFeaturesCommand.properties
deleted file mode 100644
index 6ce93e7..0000000
--- a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/ListFeaturesCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=List existing features.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/ListUrlCommand.properties b/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/ListUrlCommand.properties
deleted file mode 100644
index 583b375..0000000
--- a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/ListUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Display the repository URLs currently associated with the features service.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/RefreshUrlCommand.properties b/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/RefreshUrlCommand.properties
deleted file mode 100644
index aa02c8a..0000000
--- a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/RefreshUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Reload the repositories to obtain a fresh list of features.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/RemoveUrlCommand.properties b/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/RemoveUrlCommand.properties
deleted file mode 100644
index 565c681..0000000
--- a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/RemoveUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Remove a list of repository URLs from the features service.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/UninstallFeatureCommand.properties b/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/UninstallFeatureCommand.properties
deleted file mode 100644
index 2e21f21..0000000
--- a/karaf/gshell/gshell-features/src/main/resources/org/apache/felix/karaf/gshell/features/commands/UninstallFeatureCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Uninstall a feature.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/DisplayException.java b/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/DisplayException.java
index a4f5b9d..72e3d1f 100644
--- a/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/DisplayException.java
+++ b/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/DisplayException.java
@@ -18,7 +18,9 @@
 
 import org.ops4j.pax.logging.spi.PaxLoggingEvent;
 import org.apache.felix.karaf.gshell.console.OsgiCommandSupport;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "log", name = "display-exception", description = "Display the last exception from the log.")
 public class DisplayException extends OsgiCommandSupport {
 
     protected LruList events;
diff --git a/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/GetLogLevel.java b/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/GetLogLevel.java
index 5cb6f15..31ee58a 100644
--- a/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/GetLogLevel.java
+++ b/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/GetLogLevel.java
@@ -26,13 +26,15 @@
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.apache.felix.karaf.gshell.console.OsgiCommandSupport;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
 /**
  * Get the log level for a given logger
  */
+@Command(scope = "log", name = "get", description = "Show log level.")
 public class GetLogLevel extends OsgiCommandSupport {
 
-    @Argument(required = false, description = "Logger name, ALL or ROOT (default)")
+    @Argument(required = false, name = "LOGGER", description = "Logger name, ALL or ROOT (default)")
     String logger;
 
     static final String CONFIGURATION_PID  = "org.ops4j.pax.logging";
diff --git a/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/SetLogLevel.java b/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/SetLogLevel.java
index 4b196d2..46ee4db 100644
--- a/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/SetLogLevel.java
+++ b/karaf/gshell/gshell-log/src/main/java/org/apache/felix/karaf/gshell/log/SetLogLevel.java
@@ -20,6 +20,7 @@
 
 import org.apache.felix.karaf.gshell.console.OsgiCommandSupport;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.cm.Configuration;
 import org.osgi.service.cm.ConfigurationAdmin;
@@ -27,12 +28,13 @@
 /**
  * Set the log level for a given logger
  */
+@Command(scope = "log", name = "set", description = "Set the log level.")
 public class SetLogLevel extends OsgiCommandSupport {
 
-    @Argument(index = 0, required = true, description = "Level (TRACE, DEBUG, INFO, WARN, ERROR or - to unset")
+    @Argument(index = 0, required = true, name = "LEVEL", description = "Level (TRACE, DEBUG, INFO, WARN, ERROR or - to unset")
     String level;
 
-    @Argument(index = 1, required = false, description = "Logger name or ROOT (default)")
+    @Argument(index = 1, required = false, name = "LOGGER", description = "Logger name or ROOT (default)")
     String logger;
 
     static final String CONFIGURATION_PID  = "org.ops4j.pax.logging";
diff --git a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/DisplayException.properties b/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/DisplayException.properties
deleted file mode 100644
index 99845f3..0000000
--- a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/DisplayException.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Display the last exception from the log.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/DisplayLog.properties b/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/DisplayLog.properties
deleted file mode 100644
index 4e605b7..0000000
--- a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/DisplayLog.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Display log entries.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/GetLogLevel.properties b/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/GetLogLevel.properties
deleted file mode 100644
index 94ee1d3..0000000
--- a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/GetLogLevel.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Show log level.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/SetLogLevel.properties b/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/SetLogLevel.properties
deleted file mode 100644
index 7af3fdf..0000000
--- a/karaf/gshell/gshell-log/src/main/resources/org/apache/felix/karaf/gshell/log/SetLogLevel.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Set log level.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/AddUrlCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/AddUrlCommand.java
index a89a4a6..8d35fa9 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/AddUrlCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/AddUrlCommand.java
@@ -21,7 +21,9 @@
 
 import org.osgi.service.obr.RepositoryAdmin;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "obr", name = "addUrl", description = "Add a list of repository URLs to the OBR service.")
 public class AddUrlCommand extends ObrCommandSupport {
 
     @Argument(required = true, multiValued = true, description = "Repository URLs")
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/DeployCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/DeployCommand.java
index 8d77bdf..2b66df7 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/DeployCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/DeployCommand.java
@@ -20,7 +20,9 @@
 
 import org.osgi.service.obr.RepositoryAdmin;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "obr", name = "deploy", description = "Deploy a list of bundles using OBR")
 public class DeployCommand extends ObrCommandSupport {
 
     @Argument(required = true, multiValued = true, description = "List of bundles")
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/InfoCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/InfoCommand.java
index 3f1149a..1f57419 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/InfoCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/InfoCommand.java
@@ -23,11 +23,13 @@
 import java.util.Map;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.service.obr.Capability;
 import org.osgi.service.obr.RepositoryAdmin;
 import org.osgi.service.obr.Requirement;
 import org.osgi.service.obr.Resource;
 
+@Command(scope = "obr", name = "info", description = "Print informations about OBR bundles")
 public class InfoCommand extends ObrCommandSupport {
 
     @Argument(required = true, multiValued = true)
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListCommand.java
index c8c65c3..816134e 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListCommand.java
@@ -22,7 +22,9 @@
 import org.osgi.service.obr.RepositoryAdmin;
 import org.osgi.service.obr.Resource;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "obr", name = "list", description = "List OBR bundles")
 public class ListCommand extends ObrCommandSupport {
 
     @Argument(required = false, multiValued = true)
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListUrlCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListUrlCommand.java
index 9705656..b64cbf7 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListUrlCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/ListUrlCommand.java
@@ -18,7 +18,9 @@
 
 import org.osgi.service.obr.Repository;
 import org.osgi.service.obr.RepositoryAdmin;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "obr", name = "listUrl", description = "Display the repository URLs currently associated with the OBR service.")
 public class ListUrlCommand extends ObrCommandSupport {
 
     protected void doExecute(RepositoryAdmin admin) {
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RefreshUrlCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RefreshUrlCommand.java
index 12a1043..b5cb373 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RefreshUrlCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RefreshUrlCommand.java
@@ -22,7 +22,9 @@
 import org.osgi.service.obr.Repository;
 import org.osgi.service.obr.RepositoryAdmin;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "obr", name = "refreshUrl", description = "Reload the repositories to obtain a fresh list of bundles.")
 public class RefreshUrlCommand extends ObrCommandSupport {
 
     @Argument(required = false, multiValued = true, description = "Repository URLs (leave empty for all)")
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RemoveUrlCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RemoveUrlCommand.java
index ac72a65..677d40f 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RemoveUrlCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/RemoveUrlCommand.java
@@ -20,8 +20,10 @@
 import java.util.List;
 
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.service.obr.RepositoryAdmin;
 
+@Command(scope = "obr", name = "removeUrl", description = "Remove a list of repository URLs from the OBR service.")
 public class RemoveUrlCommand extends ObrCommandSupport {
 
     @Argument(required = true, multiValued = true, description = "Repository URLs")
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/SourceCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/SourceCommand.java
index b6b5dc1..5af1b41 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/SourceCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/SourceCommand.java
@@ -21,9 +21,11 @@
 
 import org.apache.felix.gogo.commands.Option;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.service.obr.RepositoryAdmin;
 import org.osgi.service.obr.Resource;
 
+@Command(scope = "obr", name = "source", description = "Download the sources for an OBR bundle.")
 public class SourceCommand extends ObrCommandSupport {
 
     @Option(name = "-x", description = "Extract")
diff --git a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/StartCommand.java b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/StartCommand.java
index 5e7ac8a..e1c9fd9 100644
--- a/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/StartCommand.java
+++ b/karaf/gshell/gshell-obr/src/main/java/org/apache/felix/karaf/gshell/obr/StartCommand.java
@@ -17,7 +17,9 @@
 package org.apache.felix.karaf.gshell.obr;
 
 import org.osgi.service.obr.RepositoryAdmin;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "obr", name = "start", description = "Deploy and start a list of bundles using OBR.")
 public class StartCommand extends DeployCommand {
 
     protected void doExecute(RepositoryAdmin admin) throws Exception {
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/AddUrlCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/AddUrlCommand.properties
deleted file mode 100644
index 6663c08..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/AddUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Add a list of repository URLs to the OBR service.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/DeployCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/DeployCommand.properties
deleted file mode 100644
index 500b938..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/DeployCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Deploy a list of bundles using OBR
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/InfoCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/InfoCommand.properties
deleted file mode 100644
index d9b4d59..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/InfoCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Print informations about OBR bundles
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/ListCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/ListCommand.properties
deleted file mode 100644
index fb2b3e1..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/ListCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=List OBR bundles
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/ListUrlCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/ListUrlCommand.properties
deleted file mode 100644
index e552b1d..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/ListUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Display the repository URLs currently associated with the OBR service.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/RefreshUrlCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/RefreshUrlCommand.properties
deleted file mode 100644
index ac57fcd..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/RefreshUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Reload the repositories to obtain a fresh list of bundles.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/RemoveUrlCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/RemoveUrlCommand.properties
deleted file mode 100644
index b9dfa2c..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/RemoveUrlCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Remove a list of repository URLs from the OBR service.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/SourceCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/SourceCommand.properties
deleted file mode 100644
index c8b7812..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/SourceCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Download the sources for an OBR bundle
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/StartCommand.properties b/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/StartCommand.properties
deleted file mode 100644
index 062ff85..0000000
--- a/karaf/gshell/gshell-obr/src/main/resources/org/apache/felix/karaf/gshell/obr/StartCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Deploy and start a list of bundles using OBR
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ExportsCommand.java b/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ExportsCommand.java
index b007dcf..9e60576 100644
--- a/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ExportsCommand.java
+++ b/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ExportsCommand.java
@@ -21,11 +21,13 @@
 
 import org.apache.felix.gogo.commands.Argument;
 import org.apache.felix.gogo.commands.Option;
+import org.apache.felix.gogo.commands.Command;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
 import org.osgi.service.packageadmin.ExportedPackage;
 import org.osgi.service.packageadmin.PackageAdmin;
 
+@Command(scope = "packages", name = "exports", description = "Display exported packages")
 public class ExportsCommand extends PackageCommandSupport {
 
     @Option(name = "-i", aliases = { "--imports"}, description = "List bundles importing the packages")
diff --git a/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ImportsCommand.java b/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ImportsCommand.java
index 9a8e179..5235131 100644
--- a/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ImportsCommand.java
+++ b/karaf/gshell/gshell-packages/src/main/java/org/apache/felix/karaf/gshell/packages/ImportsCommand.java
@@ -27,7 +27,9 @@
 import org.osgi.service.packageadmin.ExportedPackage;
 import org.osgi.service.packageadmin.PackageAdmin;
 import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
 
+@Command(scope = "packages", name = "imports", description = "Display imported packages")
 public class ImportsCommand extends PackageCommandSupport {
 
     @Argument(required = false, multiValued = true, description = "bundle ids")
diff --git a/karaf/gshell/gshell-packages/src/main/resources/org/apache/felix/karaf/gshell/packages/ExportsCommand.properties b/karaf/gshell/gshell-packages/src/main/resources/org/apache/felix/karaf/gshell/packages/ExportsCommand.properties
deleted file mode 100644
index 9d8f52c..0000000
--- a/karaf/gshell/gshell-packages/src/main/resources/org/apache/felix/karaf/gshell/packages/ExportsCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Print exported packages.
-
-command.manual=\
-  TODO: date manual
diff --git a/karaf/gshell/gshell-packages/src/main/resources/org/apache/felix/karaf/gshell/packages/ImportsCommand.properties b/karaf/gshell/gshell-packages/src/main/resources/org/apache/felix/karaf/gshell/packages/ImportsCommand.properties
deleted file mode 100644
index db64437..0000000
--- a/karaf/gshell/gshell-packages/src/main/resources/org/apache/felix/karaf/gshell/packages/ImportsCommand.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-##
-## Licensed to the Apache Software Foundation (ASF) under one
-## or more contributor license agreements.  See the NOTICE file
-## distributed with this work for additional information
-## regarding copyright ownership.  The ASF licenses this file
-## to you under the Apache License, Version 2.0 (the
-## "License"); you may not use this file except in compliance
-## with the License.  You may obtain a copy of the License at
-##
-##  http://www.apache.org/licenses/LICENSE-2.0
-##
-## Unless required by applicable law or agreed to in writing,
-## software distributed under the License is distributed on an
-## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-## KIND, either express or implied.  See the License for the
-## specific language governing permissions and limitations
-## under the License.
-##
-
-##
-## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
-##
-
-command.description=Print imported packages.
-
-command.manual=\
-  TODO: date manual
