Clean commands a bit

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@797981 13f79535-47bb-0310-9956-ffa450edef68
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