diff --git a/cli/desc/version200/address_space.py b/cli/desc/version200/address_space.py
new file mode 100755
index 0000000..9dfe17f
--- /dev/null
+++ b/cli/desc/version200/address_space.py
@@ -0,0 +1,637 @@
+#
+# Copyright (c) 2011,2013 Big Switch Networks, Inc.
+#
+# Licensed under the Eclipse Public License, Version 1.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.eclipse.org/legal/epl-v10.html
+#
+# 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.
+#
+
+import command
+import fmtcnv
+'''
+def address_space_origin_external (data):
+    """
+    Return origin-name when the address space wasn't created by the cli,
+    return None otherwise.
+    """
+    pk = command.mi.pk('address-space')
+    if not pk in data:
+        return;
+
+    address_space = command.sdnsh.get_table_from_store('address-space', pk,
+                                                       data[pk])
+    if len(address_space) == 0:
+        return None
+
+    local = ['cli', 'rest']
+    if 'origin' in address_space[0] and not address_space[0]['origin'] in local:
+        return address_space[0]['origin']
+    return None
+    
+
+def address_space_warn_external_config (data):
+    """
+    From the named address-space, look up the entry, if it exists in the
+    database, validate the 'origin' is either null, or 'cli',
+    otherwise provide a warning about this particular address-space
+    (along with the originator name)
+    """
+    external_origin = address_space_origin_external(data)
+    if external_origin:
+        command.sdnsh.warning(
+            'address-space %s may not be intended for cli update, '
+            'origin/creator "%s" ' % (data['name'], external_origin))
+
+
+command.add_action('address-space-warn-external-config',
+                   address_space_warn_external_config,
+                   {'kwargs': {'data' : '$data',}})
+
+
+def address_space_confirm_external_delete (data):
+    """
+    From the named address-space, look up the entry, if it exists in the
+    database, validate the 'origin' is either null, or 'cli',
+    otherwise provide a warning about this particular address-space
+    (along with the originator name)
+    """
+    external_origin = address_space_origin_external(data)
+    if external_origin:
+        confirm = command.action_registry['confirm'][0] # XXX accessor?
+        confirm('address-space %s may not be intended for cli delete, '
+                'origin/creator "%s"\nEnter y or yes to continue delete: '
+                % (data['name'], external_origin))
+
+command.add_action('address-space-confirm-external-delete',
+                   address_space_confirm_external_delete,
+                   {'kwargs': {'data'      : '$data',}})
+'''
+"""
+#
+# ----------------------------------------------------------------------
+# address-space submode configuration commands
+#
+
+#
+# conf: [no] address-space <address-space-name>
+#
+ADDRESS_SPACE_COMMAND_DESCRIPTION = {
+    'name'         : 'address-space',
+    'help'         : 'Enter Address-space submode',
+    'mode'         : 'config*',
+    'command-type' : 'config-submode',
+    'obj-type'     : 'address-space',
+    'submode-name' : 'config-address-space',
+    'short-help'   : 'Enter address space submode',
+    'doc'          : 'address-space|address-space',
+    'doc-example'  : 'address-space|address-space-example',
+    'args' : (
+        {
+            'field'        : 'name',
+            'type'         : 'identifier',
+            'completion'   : 'complete-object-field',
+            'syntax-help'  : 'Enter an address-space name',
+            'doc'          : 'address-space|identifier',
+            'doc-include'  : [ 'type-doc' ],
+            'action'       : (
+                {
+                    'proc' : 'address-space-warn-external-config',
+                },
+                {
+                    'proc' : 'push-mode-stack',
+                },
+            ),
+            'no-action'    : (
+                {
+                    'proc' : 'address-space-confirm-external-delete',
+                },
+                {
+                    'proc' : 'delete-objects',
+                },
+            )
+        }
+    ),
+}
+
+#
+# conf/address-space <as>/active {True | False}
+#
+ADDRESS_SPACE_ACTIVE_COMMAND_DESCRIPTION = {
+    'name'        : 'active',
+    'short-help'  : 'Set address-space active',
+    'mode'        : 'config-address-space',
+    'doc'         : 'address-space|active',
+    'doc-example' : 'address-space|active-example',
+    'doc-include' : [ 'default' ],
+    'args' : (),
+    'action' : (
+        {
+            'proc' : 'write-fields',
+            'data' : { 'active' : True },
+            'syntax-help' : 'mark the address-space as active',
+        }
+    ),
+    'no-action' : (
+        {
+            'proc' : 'write-fields',
+            'data' : { 'active' : False },
+            'syntax-help' : 'mark the address-space as inactive',
+        }
+    )
+}
+
+#
+# conf/address-space <as>/origin {cli | rest | ... }
+#
+ADDRESS_SPACE_ORIGIN_COMMAND_DESCRIPTION = {
+    'name'         : 'origin',
+    'short-help'   : 'Describe address-space origin',
+    'mode'         : 'config-address-space',
+    'command-type' : 'config',
+    'doc'          : 'address-space|origin',
+    'doc-example'  : 'address-space|origin-example',
+    'args' : (
+        {
+            'field'  : 'origin',
+            'type'   : 'string',
+            'action' : (
+                {
+                    'proc' : 'address-space-warn-external-config',
+                },
+                {
+                    'proc' : 'write-fields',
+                },
+            ),
+        },
+    ),
+}
+
+#
+# conf/address-space <as>/priority <pri>
+#
+ADDRESS_SPACE_PRIORITY_COMMAND_DESCRIPTION = {
+    'name'         : 'priority',
+    'short-help'   : 'Set address-space priority',
+    'mode'         : 'config-address-space',
+    'command-type' : 'config',
+    'doc'          : 'address-space|priority',
+    'doc-example'  : 'address-space|priority-example',
+    'doc-include'  : [ 'range', 'default' ],
+    'args' : (
+        {
+            'field'     : 'priority',
+            'base-type' : 'integer',
+            'range'     : (0, 65535),
+        }
+    )
+}
+"""
+
+def address_space_check_unique_vlan(data):
+    """
+    Peek to see if the vlan is in use by any other address-space
+    """
+    vlan_field = 'vlan-tag-on-egress'
+    in_use = command.sdnsh.get_table_from_store('address-space',
+                                                vlan_field,
+                                                str(data[vlan_field]))
+    vlan_field = 'vlan-tag-on-egress'
+    if len(in_use) > 0:
+        current_as = command.sdnsh.get_current_mode_obj()
+        other_as = [x['name'] for x in in_use if x['name'] != current_as]
+        if len(other_as):
+            command.sdnsh.warning(
+                    'vlan %s currently in use by other address-spaces: %s' %
+                    (data[vlan_field], ', '.join(other_as)))
+
+
+command.add_action('address-space-check-unique-vlan',
+                   address_space_check_unique_vlan,
+                   {'kwargs': {'data' : '$data',}})
+
+"""
+#
+# conf/address-space <as>/vlan-tag-on-egress <tag>
+#
+ADDRESS_SPACE_VLAN_TAG_ON_EGRESS_COMMAND_DESCRIPTION = {
+    'name'         : 'vlan-tag-on-egress',
+    'short-help'   : 'Egress VLAN tag',
+    'mode'         : 'config-address-space',
+    'command-type' : 'config',
+    'doc'          : 'address-space|vlan-tag-on-egress',
+    'doc-example'  : 'address-space|vlan-tag-on-egress-example',
+    'args' : (
+        {
+            'field'     : 'vlan-tag-on-egress',
+            'base-type' : 'integer',
+            'range'     : (1, 4096),
+            'action'    : (
+                {
+                    'proc' : 'address-space-check-unique-vlan',
+                },
+                {
+                    'proc' : 'write-fields',
+                },
+            ),
+        }
+    )
+}
+
+#
+# conf/address-space <as>/description <descr>
+#
+ADDRESS_SPACE_DESCRIPTION_COMMAND_DESCRIPTION = {
+    'name'         : 'description',
+    'short-help'   : 'Provide description for this address-space',
+    'mode'         : 'config-address-space',
+    'command-type' : 'config',
+    'doc'          : 'address-space|description',
+    'doc-example'  : 'address-space|description-example',
+    'args'         : (
+        {
+            'field' : 'description',
+            'type'  : 'string',
+        }
+    ),
+}
+
+#
+# conf/address-space <as>/identifier-rule <ir>
+#
+ADDRESS_SPACE_IDENTIFIER_RULE_COMMAND_DESCRIPTION = {
+    'name'         : 'identifier-rule',
+    'short-help'   : 'Set an address-space identifier rule',
+    'mode'         : 'config-address-space*',
+    'command-type' : 'config-submode',
+    'obj-type'     : 'address-space-identifier-rule',
+    'parent-field' : 'address-space',
+    'submode-name' : 'config-address-space-id-rule',
+    'doc'          : 'address-space|identifier-rule',
+    'doc-example'  : 'address-space|identifier-rule-example',
+    'args' : (
+        {
+            'field'        : 'rule',
+            'type'         : 'identifier',
+            'syntax-help'  : 'Enter an address-space identifier rule name',
+            'completion'   : 'complete-object-field',
+            'doc-include'  : [ 'type-doc' ],
+            'doc'          : 'address-space|id-rule-identifier',
+            'scoped'       : True,
+        }
+    )
+}
+
+#
+# ----------------------------------------------------------------------
+# address-space identifier rules submode
+#
+
+#
+# conf/address-space <as>/identifier-rule <ir>/active {True | False}
+#
+ADDRESS_SPACE_ID_ACTIVE_COMMAND_DESCRIPTION = {
+    'name'         : 'active',
+    'mode'         : 'config-address-space-id-rule',
+    'short-help'   : 'Set rule to Active',
+    'command-type' : 'config',
+    'doc'          : 'address-space|id-active',
+    'doc-example'  : 'address-space|id-active-example',
+    'doc-include'  : [ 'default' ],
+    'args'         : (),
+    'action'       : (
+        {
+            'proc' : 'write-fields',
+            'data' : { 'active' : True }
+        }
+    ),
+    'no-action'    : (
+        {
+            'proc' : 'write-fields',
+            'data' : { 'active' : False }
+        }
+    )
+}
+
+#
+# conf/address-space <as>/identifier-rule <ir>/description <descr>
+#
+ADDRESS_SPACE_ID_DESCRIPTION_COMMAND_DESCRIPTION = {
+    'name'         : 'description',
+    'short-help'   : 'Provide description for identifier rule',
+    'mode'         : 'config-address-space-id-rule',
+    'command-type' : 'config',
+    'doc'          : 'address-space|id-description',
+    'doc-example'  : 'address-space|id-description-example',
+    'args'         : (
+        {
+            'field' : 'description',
+            'type'  : 'string',
+        }
+    ),
+}
+
+#
+# conf/address-space <as>/identifier-rule <ir>/priority <pri>
+#
+ADDRESS_SPACE_ID_PRIORITY_COMMAND_DESCRIPTION = {
+    'name'         : 'priority',
+    'short-help'   : 'Describe priority for identifier rule',
+    'mode'         : 'config-address-space-id-rule',
+    'command-type' : 'config',
+    'doc'          : 'address-space|id-priority',
+    'doc-include'  : [ 'range', 'default' ],
+    'doc-example'  : 'address-space|id-priority-example',
+    'args'         : (
+        {
+            'field' : 'priority',
+            'value' : 'integer',
+        }
+    ),
+}
+
+#
+# conf/address-space <as>/identifier-rule <ir>/switch <swt-dpid>
+#
+ADDRESS_SPACE_ID_MATCH_SWITCH_COMMAND_DESCRIPTION = {
+    'name'         : 'match',
+    'short-help'   : 'Associate switch with identifier rule',
+    'all-help'     : 'Configure a match for this identifier rule',
+    'mode'         : 'config-address-space-id-rule',
+    'command-type' : 'config',
+    'obj-type'     : 'address-space-identifier-rule',
+    'doc-all'      : 'address-space|match',
+    'doc-example'  : 'address-space|match-switch-example',
+    'data'         : { # for no command reset
+                       'switch' : None,
+                       'ports'  : None,
+                     },
+    'args'         : (
+        {
+            'token'        : 'switch',
+            'doc'          : 'address-space|match-switch',
+        },
+        {
+            # constructed as args to ensure that the ports isn't
+            # completed along with swtich values for 'no match switch'
+            'optional-for-no' : True,
+            'args' : (
+                {
+                    'field'           : 'switch',
+                    'type'            : 'string',
+                    'parent-field'    : None,
+                    'completion'      : [
+                                          'complete-object-field',
+                                          'complete-alias-choice',
+                                        ],
+                    'help-name'       : 'switch dpid or switch alias',
+                    'data-handler'    : 'alias-to-value',
+                    'other'           : 'switches|dpid',
+                },
+                {
+                    'field'           : 'ports',
+                    'optional'        : True,
+                    'type'            : 'string',
+                    'help-name'       : 'switch interface, or range, or list',
+                    'completion'      : 'complete-interface-list',
+                    'optional-for-no' : True,
+                    'doc'             : 'address-space|match-switch-ports',
+                },
+            ),
+        },
+    ),
+}
+
+
+#
+# conf/address-space <as>/identifier-rule <ir>/tag <name-val-pair>
+#
+ADDRESS_SPACE_ID_MATCH_TAG_COMMAND_DESCRIPTION = {
+    'name'         : 'match',
+    'short-help'   : 'Associate tag with identifier rule',
+    'mode'         : 'config-address-space-id-rule',
+    'command-type' : 'config',
+    'data'         : { # for no command reset
+                       'tag' : None,
+                     },
+    'doc-example'  : 'address-space|match-tag-example',
+    'args' : (
+        {
+            'token'        : 'tags',
+            'doc'          : 'address-space|match-tag',
+        },
+        {
+            'field'           : 'tag',
+            'type'            : 'string',
+            'optional-for-no' : True,
+        }
+    )
+}
+
+#
+# conf/address-space <as>/identifier-rule <ir>/vlans <vl>
+#
+ADDRESS_SPACE_ID_MATCH_VLANS_COMMAND_DESCRIPTION = {
+    'name'         : 'match',
+    'short-help'   : 'Associate vlans with identifier rule',
+    'mode'         : 'config-address-space-id-rule',
+    'command-type' : 'config',
+    'data'         : { # for no command reset
+                       'vlans' : None,
+                     },
+    'doc-example'  : 'address-space|match-vlan-example',
+    'args'         : (
+        {
+            'token'        : 'vlans',
+            'doc'          : 'address-space|match-vlan',
+        },
+        {
+            'field'           : 'vlans',
+            'value'           : 'string',
+            'help-name'       : 'Vlan number (1-4095) or range, or list',
+            'optional-for-no' : True,
+        }
+    ),
+}
+
+#
+# ----------------------------------------------------------------------
+# show address-space commands
+#
+
+#
+# show address-space <cr>
+#
+ADDRESS_SPACE_SHOW_COMMAND_DESCRIPTION = {
+    'name'         : 'show',
+    'obj-type'     : 'address-space',
+    'mode'         : 'login',
+    'command-type' : 'display-table',
+    'all-help'     : 'Show address space information',
+    'short-help'   : 'Show all address spaces',
+    'doc'          : 'address-space|show',
+    'doc-example'  : 'address-space|show-example',
+    'args'         : (
+        'address-space',
+    ),
+}
+
+#
+# show address-space <as> [brief | details] <cr>
+#
+ADDRESS_SPACE_SHOW_ID_COMMAND_DESCRIPTION = {
+    'name'         : 'show',
+    'obj-type'     : 'address-space',
+    'mode'         : 'login',
+    'command-type' : 'display-table',
+    'short-help'   : 'Show a specific address space',
+    'doc'          : 'address-space|show-id',
+    'doc-example'  : 'address-space|show-id-example',
+    'args'         : (
+        'address-space',
+        {
+            'choices' : (
+                {
+                    'field'      : 'name',
+                    'type'       : 'identifier',
+                    'completion' : 'complete-object-field',
+                    'help-name'  : "address-space-name",
+                },
+                {
+                    'field'     : 'name',
+                    'type'     : 'enum',
+                    'values'   : 'all',
+                }
+            ),
+        },
+        {
+            'field'    : 'detail',
+            'optional' : True,
+            'type'     : 'enum',
+            'values'   : ('details', 'brief'),
+            'doc'      : 'format|+',
+        }
+    )
+}
+
+#
+# show address-space <as> [ identifier-rules ] ...
+#
+ADDRESS_SPACE_SHOW_ID_DETAILS_COMMAND_DESCRIPTION = {
+    'name'         : 'show',
+    'obj-type'     : 'address-space',
+    'mode'         : 'login',
+    'command-type' : 'display-table',
+    'short-help'   : 'Show the configured identifier-rules for a specific address space',
+    'doc'          : 'address-space|show-id-rules',
+    'doc-example'  : 'address-space|show-id-rules-example',
+    'args'         : (
+        'address-space',
+        {
+            'choices' : (
+                {
+                    'field'      : 'name',
+                    'type'       : 'identifier',
+                    'completion' : 'complete-object-field',
+                    'help-name'  : "address-space-name",
+                },
+                {
+                    'field'     : 'name',
+                    'type'      : 'enum',
+                    'values'    : 'all',
+                }
+            ),
+        },
+        {
+            # show address-space <as> { identifier-rules }
+            'choices' : (
+                {
+                    'field'    : 'identifier-rules',
+                    'type'     : 'enum',
+                    'values'   : 'identifier-rules',
+                    'action'   : 'display-table',
+                    'obj-type' : 'address-space-identifier-rule',
+                },
+            )
+        }
+    ),
+}
+
+#
+# FORMATS
+#  perhaps these ought be moved next to their respective show commands
+#
+
+ADDRESS_SPACE_FORMAT = {
+    'address-space' : {
+        'field-orderings' : {
+            'default'               : ['Idx', 'name', 'active', 'priority',
+                                       'vlan-tag-on-egress'],
+            'address-space-config'  : ['Idx', 'name', 'active',
+                                       'vlan-tag-on-egress'],
+            'brief'                 : ['Idx', 'name', 'vlan-tag-on-egress'],
+            'details'               : ['Idx', 'name', 'active', 'priority',
+                                        'description', 'vlan-tag-on-egress'],
+            },
+        'fields' : {
+           'name'              : { 'verbose-name' : 'Address Space',
+                                 },
+           'active'            : {
+                                 },
+           'priority'          : {
+                                 },
+           'vlan-tag-on-egress': {
+                                   'verbose-name' : 'Vlan Tag on Egress',
+                                 },
+           'description'       : {
+                                 },
+           }
+        },
+}
+
+
+ADDRESS_SPACE_IDENTIFIER_RULE_FORMAT = {
+    'address-space-identifier-rule' : {
+        'field-orderings': {
+            'default'              : [ 'Idx',    'address-space',  'rule',
+                                       'active', 'priority', 'switch', 'ports',
+                                       'tag',    'vlans'
+                                     ],
+            'address-space-config' : [ 'Idx',    'rule',     'description',
+                                       'active', 'priority', 'switch', 'ports',
+                                       'tag', 'vlans'
+                                     ],
+            },
+        'fields': {
+            'rule'           : { 'verbose-name' : 'Address Space Rule ID',
+                               },
+            'address-space'  : {
+                                 'verbose-name' : 'Address Space'
+                               },
+            'active'         : {
+                               },
+            'description'    : {
+                               },
+            'ports'          : {
+                               },
+            'priority'       : {
+                               },
+            'rule'           : {
+                               },
+            'switch'         : {
+                               },
+            'tag'            : {
+                               },
+            'vlans'          : {
+                               },
+            }
+        },
+}
+"""
