new file:   commands/__init__.py
	renamed:    cert-request.proto -> commands/cert-request.proto
	new file:   commands/cert_request_pb2.py
	new file:   commands/configure-device.proto
	new file:   commands/configure_device_pb2.py
	new file:   commands/send-pairing-info.proto
	new file:   commands/send_pairing_info_pb2.py
	new file:   commands/update-capabilities.proto
	new file:   commands/update_capabilities_pb2.py
	modified:   end-device.py
diff --git a/commands/__init__.py b/commands/__init__.py
new file mode 100644
index 0000000..3bfc022
--- /dev/null
+++ b/commands/__init__.py
@@ -0,0 +1,6 @@
+__all__ = ['cert_request_pb2', 'configure_device_pb2', 'send_pairing_info_pb2', 'update_capabilities_pb2']
+
+from cert_request_pb2 import CertificateRequestMessage
+from update_capabilities_pb2 import UpdateCapabilitiesCommandMessage
+from configure_device_pb2 import DeviceConfigurationMessage
+from send_pairing_info_pb2 import DevicePairingInfoMessage
diff --git a/cert-request.proto b/commands/cert-request.proto
similarity index 100%
rename from cert-request.proto
rename to commands/cert-request.proto
diff --git a/commands/cert_request_pb2.py b/commands/cert_request_pb2.py
new file mode 100644
index 0000000..0bb096d
--- /dev/null
+++ b/commands/cert_request_pb2.py
@@ -0,0 +1,138 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+from google.protobuf import descriptor
+from google.protobuf import message
+from google.protobuf import reflection
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+
+
+DESCRIPTOR = descriptor.FileDescriptor(
+  name='cert-request.proto',
+  package='',
+  serialized_pb='\n\x12\x63\x65rt-request.proto\"\xe5\x01\n\x19\x43\x65rtificateRequestMessage\x12?\n\x07\x63ommand\x18\xdf\x01 \x02(\x0b\x32-.CertificateRequestMessage.CertificateRequest\x1a\x1a\n\x04Name\x12\x12\n\ncomponents\x18\x08 \x03(\x0c\x1ak\n\x12\x43\x65rtificateRequest\x12\x31\n\x07keyName\x18\xdc\x01 \x02(\x0b\x32\x1f.CertificateRequestMessage.Name\x12\x10\n\x07keyType\x18\xdd\x01 \x02(\r\x12\x10\n\x07keyBits\x18\xde\x01 \x02(\x0c')
+
+
+
+
+_CERTIFICATEREQUESTMESSAGE_NAME = descriptor.Descriptor(
+  name='Name',
+  full_name='CertificateRequestMessage.Name',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='components', full_name='CertificateRequestMessage.Name.components', index=0,
+      number=8, type=12, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=117,
+  serialized_end=143,
+)
+
+_CERTIFICATEREQUESTMESSAGE_CERTIFICATEREQUEST = descriptor.Descriptor(
+  name='CertificateRequest',
+  full_name='CertificateRequestMessage.CertificateRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='keyName', full_name='CertificateRequestMessage.CertificateRequest.keyName', index=0,
+      number=220, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='keyType', full_name='CertificateRequestMessage.CertificateRequest.keyType', index=1,
+      number=221, type=13, cpp_type=3, label=2,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='keyBits', full_name='CertificateRequestMessage.CertificateRequest.keyBits', index=2,
+      number=222, type=12, cpp_type=9, label=2,
+      has_default_value=False, default_value="",
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=145,
+  serialized_end=252,
+)
+
+_CERTIFICATEREQUESTMESSAGE = descriptor.Descriptor(
+  name='CertificateRequestMessage',
+  full_name='CertificateRequestMessage',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='command', full_name='CertificateRequestMessage.command', index=0,
+      number=223, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[_CERTIFICATEREQUESTMESSAGE_NAME, _CERTIFICATEREQUESTMESSAGE_CERTIFICATEREQUEST, ],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=23,
+  serialized_end=252,
+)
+
+_CERTIFICATEREQUESTMESSAGE_NAME.containing_type = _CERTIFICATEREQUESTMESSAGE;
+_CERTIFICATEREQUESTMESSAGE_CERTIFICATEREQUEST.fields_by_name['keyName'].message_type = _CERTIFICATEREQUESTMESSAGE_NAME
+_CERTIFICATEREQUESTMESSAGE_CERTIFICATEREQUEST.containing_type = _CERTIFICATEREQUESTMESSAGE;
+_CERTIFICATEREQUESTMESSAGE.fields_by_name['command'].message_type = _CERTIFICATEREQUESTMESSAGE_CERTIFICATEREQUEST
+DESCRIPTOR.message_types_by_name['CertificateRequestMessage'] = _CERTIFICATEREQUESTMESSAGE
+
+class CertificateRequestMessage(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  
+  class Name(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _CERTIFICATEREQUESTMESSAGE_NAME
+    
+    # @@protoc_insertion_point(class_scope:CertificateRequestMessage.Name)
+  
+  class CertificateRequest(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _CERTIFICATEREQUESTMESSAGE_CERTIFICATEREQUEST
+    
+    # @@protoc_insertion_point(class_scope:CertificateRequestMessage.CertificateRequest)
+  DESCRIPTOR = _CERTIFICATEREQUESTMESSAGE
+  
+  # @@protoc_insertion_point(class_scope:CertificateRequestMessage)
+
+# @@protoc_insertion_point(module_scope)
diff --git a/commands/configure-device.proto b/commands/configure-device.proto
new file mode 100644
index 0000000..1bd38e1
--- /dev/null
+++ b/commands/configure-device.proto
@@ -0,0 +1,11 @@
+message DeviceConfigurationMessage {
+	message Name {
+		repeated bytes components = 8;
+	}
+    message DeviceConfiguration {
+        required Name networkPrefix = 224;
+        required Name controllerName = 225;
+        required Name deviceSuffix = 226;
+    }
+	required DeviceConfiguration configuration = 227;
+}
diff --git a/commands/configure_device_pb2.py b/commands/configure_device_pb2.py
new file mode 100644
index 0000000..6a48eec
--- /dev/null
+++ b/commands/configure_device_pb2.py
@@ -0,0 +1,140 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+from google.protobuf import descriptor
+from google.protobuf import message
+from google.protobuf import reflection
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+
+
+DESCRIPTOR = descriptor.FileDescriptor(
+  name='configure-device.proto',
+  package='',
+  serialized_pb='\n\x16\x63onfigure-device.proto\"\xc7\x02\n\x1a\x44\x65viceConfigurationMessage\x12G\n\rconfiguration\x18\xe3\x01 \x02(\x0b\x32/.DeviceConfigurationMessage.DeviceConfiguration\x1a\x1a\n\x04Name\x12\x12\n\ncomponents\x18\x08 \x03(\x0c\x1a\xc3\x01\n\x13\x44\x65viceConfiguration\x12\x38\n\rnetworkPrefix\x18\xe0\x01 \x02(\x0b\x32 .DeviceConfigurationMessage.Name\x12\x39\n\x0e\x63ontrollerName\x18\xe1\x01 \x02(\x0b\x32 .DeviceConfigurationMessage.Name\x12\x37\n\x0c\x64\x65viceSuffix\x18\xe2\x01 \x02(\x0b\x32 .DeviceConfigurationMessage.Name')
+
+
+
+
+_DEVICECONFIGURATIONMESSAGE_NAME = descriptor.Descriptor(
+  name='Name',
+  full_name='DeviceConfigurationMessage.Name',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='components', full_name='DeviceConfigurationMessage.Name.components', index=0,
+      number=8, type=12, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=130,
+  serialized_end=156,
+)
+
+_DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION = descriptor.Descriptor(
+  name='DeviceConfiguration',
+  full_name='DeviceConfigurationMessage.DeviceConfiguration',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='networkPrefix', full_name='DeviceConfigurationMessage.DeviceConfiguration.networkPrefix', index=0,
+      number=224, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='controllerName', full_name='DeviceConfigurationMessage.DeviceConfiguration.controllerName', index=1,
+      number=225, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='deviceSuffix', full_name='DeviceConfigurationMessage.DeviceConfiguration.deviceSuffix', index=2,
+      number=226, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=159,
+  serialized_end=354,
+)
+
+_DEVICECONFIGURATIONMESSAGE = descriptor.Descriptor(
+  name='DeviceConfigurationMessage',
+  full_name='DeviceConfigurationMessage',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='configuration', full_name='DeviceConfigurationMessage.configuration', index=0,
+      number=227, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[_DEVICECONFIGURATIONMESSAGE_NAME, _DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION, ],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=27,
+  serialized_end=354,
+)
+
+_DEVICECONFIGURATIONMESSAGE_NAME.containing_type = _DEVICECONFIGURATIONMESSAGE;
+_DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION.fields_by_name['networkPrefix'].message_type = _DEVICECONFIGURATIONMESSAGE_NAME
+_DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION.fields_by_name['controllerName'].message_type = _DEVICECONFIGURATIONMESSAGE_NAME
+_DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION.fields_by_name['deviceSuffix'].message_type = _DEVICECONFIGURATIONMESSAGE_NAME
+_DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION.containing_type = _DEVICECONFIGURATIONMESSAGE;
+_DEVICECONFIGURATIONMESSAGE.fields_by_name['configuration'].message_type = _DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION
+DESCRIPTOR.message_types_by_name['DeviceConfigurationMessage'] = _DEVICECONFIGURATIONMESSAGE
+
+class DeviceConfigurationMessage(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  
+  class Name(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _DEVICECONFIGURATIONMESSAGE_NAME
+    
+    # @@protoc_insertion_point(class_scope:DeviceConfigurationMessage.Name)
+  
+  class DeviceConfiguration(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _DEVICECONFIGURATIONMESSAGE_DEVICECONFIGURATION
+    
+    # @@protoc_insertion_point(class_scope:DeviceConfigurationMessage.DeviceConfiguration)
+  DESCRIPTOR = _DEVICECONFIGURATIONMESSAGE
+  
+  # @@protoc_insertion_point(class_scope:DeviceConfigurationMessage)
+
+# @@protoc_insertion_point(module_scope)
diff --git a/commands/send-pairing-info.proto b/commands/send-pairing-info.proto
new file mode 100644
index 0000000..02649bb
--- /dev/null
+++ b/commands/send-pairing-info.proto
@@ -0,0 +1,8 @@
+message DevicePairingInfoMessage {
+ message DevicePairingInfo {
+    required string deviceSerial = 236;
+    required bytes devicePin = 237;
+    required string deviceSuffix = 238;
+}
+ required DevicePairingInfo info = 239;
+}
diff --git a/commands/send_pairing_info_pb2.py b/commands/send_pairing_info_pb2.py
new file mode 100644
index 0000000..aeb0027
--- /dev/null
+++ b/commands/send_pairing_info_pb2.py
@@ -0,0 +1,103 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+from google.protobuf import descriptor
+from google.protobuf import message
+from google.protobuf import reflection
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+
+
+DESCRIPTOR = descriptor.FileDescriptor(
+  name='send-pairing-info.proto',
+  package='',
+  serialized_pb='\n\x17send-pairing-info.proto\"\xad\x01\n\x18\x44\x65vicePairingInfoMessage\x12:\n\x04info\x18\xee\x01 \x02(\x0b\x32+.DevicePairingInfoMessage.DevicePairingInfo\x1aU\n\x11\x44\x65vicePairingInfo\x12\x15\n\x0c\x64\x65viceSerial\x18\xeb\x01 \x02(\t\x12\x12\n\tdevicePin\x18\xec\x01 \x02(\x0c\x12\x15\n\x0c\x64\x65viceSuffix\x18\xed\x01 \x02(\t')
+
+
+
+
+_DEVICEPAIRINGINFOMESSAGE_DEVICEPAIRINGINFO = descriptor.Descriptor(
+  name='DevicePairingInfo',
+  full_name='DevicePairingInfoMessage.DevicePairingInfo',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='deviceSerial', full_name='DevicePairingInfoMessage.DevicePairingInfo.deviceSerial', index=0,
+      number=235, type=9, cpp_type=9, label=2,
+      has_default_value=False, default_value=unicode("", "utf-8"),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='devicePin', full_name='DevicePairingInfoMessage.DevicePairingInfo.devicePin', index=1,
+      number=236, type=12, cpp_type=9, label=2,
+      has_default_value=False, default_value="",
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='deviceSuffix', full_name='DevicePairingInfoMessage.DevicePairingInfo.deviceSuffix', index=2,
+      number=237, type=9, cpp_type=9, label=2,
+      has_default_value=False, default_value=unicode("", "utf-8"),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=116,
+  serialized_end=201,
+)
+
+_DEVICEPAIRINGINFOMESSAGE = descriptor.Descriptor(
+  name='DevicePairingInfoMessage',
+  full_name='DevicePairingInfoMessage',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='info', full_name='DevicePairingInfoMessage.info', index=0,
+      number=238, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[_DEVICEPAIRINGINFOMESSAGE_DEVICEPAIRINGINFO, ],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=28,
+  serialized_end=201,
+)
+
+_DEVICEPAIRINGINFOMESSAGE_DEVICEPAIRINGINFO.containing_type = _DEVICEPAIRINGINFOMESSAGE;
+_DEVICEPAIRINGINFOMESSAGE.fields_by_name['info'].message_type = _DEVICEPAIRINGINFOMESSAGE_DEVICEPAIRINGINFO
+DESCRIPTOR.message_types_by_name['DevicePairingInfoMessage'] = _DEVICEPAIRINGINFOMESSAGE
+
+class DevicePairingInfoMessage(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  
+  class DevicePairingInfo(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _DEVICEPAIRINGINFOMESSAGE_DEVICEPAIRINGINFO
+    
+    # @@protoc_insertion_point(class_scope:DevicePairingInfoMessage.DevicePairingInfo)
+  DESCRIPTOR = _DEVICEPAIRINGINFOMESSAGE
+  
+  # @@protoc_insertion_point(class_scope:DevicePairingInfoMessage)
+
+# @@protoc_insertion_point(module_scope)
diff --git a/commands/update-capabilities.proto b/commands/update-capabilities.proto
new file mode 100644
index 0000000..f636564
--- /dev/null
+++ b/commands/update-capabilities.proto
@@ -0,0 +1,21 @@
+message UpdateCapabilitiesCommandMessage {
+	message Name {
+		repeated bytes components = 8;
+	}
+
+	message CapabilitiesParameter {
+		required string parameterType = 228; // should be a protobuf type
+		optional string parameterDesc = 229; // what is this parameter for? (recommended)
+	}
+
+	message Capability {
+		required Name commandPrefix = 230; // the name (after device prefix) of command 
+		repeated string keywords = 231; // other devices can search for one or more keywords
+						// e.g. 'cec', 'motion', 'thermostat'
+		repeated CapabilitiesParameter parameterDesc = 232; // list of parameter descriptions
+        optional bool needsSignature=233;
+        required String deviceSerial=234;
+	}
+
+    repeated Capability capabilities = 235;
+}
diff --git a/commands/update_capabilities_pb2.py b/commands/update_capabilities_pb2.py
new file mode 100644
index 0000000..94dc63d
--- /dev/null
+++ b/commands/update_capabilities_pb2.py
@@ -0,0 +1,187 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+
+from google.protobuf import descriptor
+from google.protobuf import message
+from google.protobuf import reflection
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+
+
+DESCRIPTOR = descriptor.FileDescriptor(
+  name='update-capabilities.proto',
+  package='',
+  serialized_pb='\n\x19update-capabilities.proto\"\x98\x03\n UpdateCapabilitiesCommandMessage\x12\x43\n\x0c\x63\x61pabilities\x18\xea\x01 \x03(\x0b\x32,.UpdateCapabilitiesCommandMessage.Capability\x1a\x1a\n\x04Name\x12\x12\n\ncomponents\x18\x08 \x03(\x0c\x1aG\n\x15\x43\x61pabilitiesParameter\x12\x16\n\rparameterType\x18\xe4\x01 \x02(\t\x12\x16\n\rparameterDesc\x18\xe5\x01 \x01(\t\x1a\xc9\x01\n\nCapability\x12>\n\rcommandPrefix\x18\xe6\x01 \x02(\x0b\x32&.UpdateCapabilitiesCommandMessage.Name\x12\x11\n\x08keywords\x18\xe7\x01 \x03(\t\x12O\n\rparameterDesc\x18\xe8\x01 \x03(\x0b\x32\x37.UpdateCapabilitiesCommandMessage.CapabilitiesParameter\x12\x17\n\x0eneedsSignature\x18\xe9\x01 \x01(\x08')
+
+
+
+
+_UPDATECAPABILITIESCOMMANDMESSAGE_NAME = descriptor.Descriptor(
+  name='Name',
+  full_name='UpdateCapabilitiesCommandMessage.Name',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='components', full_name='UpdateCapabilitiesCommandMessage.Name.components', index=0,
+      number=8, type=12, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=135,
+  serialized_end=161,
+)
+
+_UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITIESPARAMETER = descriptor.Descriptor(
+  name='CapabilitiesParameter',
+  full_name='UpdateCapabilitiesCommandMessage.CapabilitiesParameter',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='parameterType', full_name='UpdateCapabilitiesCommandMessage.CapabilitiesParameter.parameterType', index=0,
+      number=228, type=9, cpp_type=9, label=2,
+      has_default_value=False, default_value=unicode("", "utf-8"),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='parameterDesc', full_name='UpdateCapabilitiesCommandMessage.CapabilitiesParameter.parameterDesc', index=1,
+      number=229, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=unicode("", "utf-8"),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=163,
+  serialized_end=234,
+)
+
+_UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITY = descriptor.Descriptor(
+  name='Capability',
+  full_name='UpdateCapabilitiesCommandMessage.Capability',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='commandPrefix', full_name='UpdateCapabilitiesCommandMessage.Capability.commandPrefix', index=0,
+      number=230, type=11, cpp_type=10, label=2,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='keywords', full_name='UpdateCapabilitiesCommandMessage.Capability.keywords', index=1,
+      number=231, type=9, cpp_type=9, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='parameterDesc', full_name='UpdateCapabilitiesCommandMessage.Capability.parameterDesc', index=2,
+      number=232, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='needsSignature', full_name='UpdateCapabilitiesCommandMessage.Capability.needsSignature', index=3,
+      number=233, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=237,
+  serialized_end=438,
+)
+
+_UPDATECAPABILITIESCOMMANDMESSAGE = descriptor.Descriptor(
+  name='UpdateCapabilitiesCommandMessage',
+  full_name='UpdateCapabilitiesCommandMessage',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='capabilities', full_name='UpdateCapabilitiesCommandMessage.capabilities', index=0,
+      number=234, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[_UPDATECAPABILITIESCOMMANDMESSAGE_NAME, _UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITIESPARAMETER, _UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITY, ],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=30,
+  serialized_end=438,
+)
+
+_UPDATECAPABILITIESCOMMANDMESSAGE_NAME.containing_type = _UPDATECAPABILITIESCOMMANDMESSAGE;
+_UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITIESPARAMETER.containing_type = _UPDATECAPABILITIESCOMMANDMESSAGE;
+_UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITY.fields_by_name['commandPrefix'].message_type = _UPDATECAPABILITIESCOMMANDMESSAGE_NAME
+_UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITY.fields_by_name['parameterDesc'].message_type = _UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITIESPARAMETER
+_UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITY.containing_type = _UPDATECAPABILITIESCOMMANDMESSAGE;
+_UPDATECAPABILITIESCOMMANDMESSAGE.fields_by_name['capabilities'].message_type = _UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITY
+DESCRIPTOR.message_types_by_name['UpdateCapabilitiesCommandMessage'] = _UPDATECAPABILITIESCOMMANDMESSAGE
+
+class UpdateCapabilitiesCommandMessage(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  
+  class Name(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _UPDATECAPABILITIESCOMMANDMESSAGE_NAME
+    
+    # @@protoc_insertion_point(class_scope:UpdateCapabilitiesCommandMessage.Name)
+  
+  class CapabilitiesParameter(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITIESPARAMETER
+    
+    # @@protoc_insertion_point(class_scope:UpdateCapabilitiesCommandMessage.CapabilitiesParameter)
+  
+  class Capability(message.Message):
+    __metaclass__ = reflection.GeneratedProtocolMessageType
+    DESCRIPTOR = _UPDATECAPABILITIESCOMMANDMESSAGE_CAPABILITY
+    
+    # @@protoc_insertion_point(class_scope:UpdateCapabilitiesCommandMessage.Capability)
+  DESCRIPTOR = _UPDATECAPABILITIESCOMMANDMESSAGE
+  
+  # @@protoc_insertion_point(class_scope:UpdateCapabilitiesCommandMessage)
+
+# @@protoc_insertion_point(module_scope)
diff --git a/end-device.py b/end-device.py
index cbcb841..a78e3da 100644
--- a/end-device.py
+++ b/end-device.py
@@ -21,7 +21,7 @@
 from pyndn import Name
 from pyndn import Face
 from base_node import BaseNode
-import CertificateRequestMessage
+from commands import CertificateRequestMessage
 
 def dump(*list):
     result = ""