diff --git a/dmi.pb b/dmi.pb
index f0a74e5..aab64a6 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/go/dmi/hw_management_service.pb.go b/go/dmi/hw_management_service.pb.go
index 65206c9..978f2bd 100644
--- a/go/dmi/hw_management_service.pb.go
+++ b/go/dmi/hw_management_service.pb.go
@@ -348,38 +348,38 @@
 func init() { proto.RegisterFile("dmi/hw_management_service.proto", fileDescriptor_eae902e73066286d) }
 
 var fileDescriptor_eae902e73066286d = []byte{
-	// 488 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x54, 0xd1, 0x6a, 0x13, 0x41,
-	0x14, 0x65, 0x13, 0xa9, 0x64, 0x62, 0x03, 0x8e, 0x3e, 0x6c, 0x56, 0xb4, 0x65, 0x45, 0x10, 0xa5,
-	0xd9, 0x90, 0x3e, 0x89, 0x6f, 0x2a, 0x4d, 0xfa, 0x90, 0x22, 0xbb, 0x94, 0x80, 0x2f, 0x61, 0xb2,
-	0x73, 0xb3, 0x19, 0xe8, 0xcc, 0xc4, 0x99, 0xd9, 0x94, 0xfe, 0x86, 0xfe, 0x80, 0x1f, 0xe5, 0xab,
-	0xff, 0x22, 0x3b, 0xd3, 0xdd, 0xc4, 0x24, 0x2b, 0x22, 0x0a, 0x7d, 0x4b, 0xee, 0x39, 0xf7, 0x70,
-	0xee, 0xde, 0x7b, 0x06, 0x1d, 0x51, 0xce, 0xa2, 0xc5, 0xf5, 0x94, 0x13, 0x41, 0x32, 0xe0, 0x20,
-	0xcc, 0x54, 0x83, 0x5a, 0xb1, 0x14, 0x7a, 0x4b, 0x25, 0x8d, 0xc4, 0x4d, 0xca, 0x59, 0xf0, 0xb0,
-	0x60, 0xa5, 0x92, 0x73, 0x29, 0xb4, 0xab, 0x07, 0x0f, 0x5c, 0xa3, 0xfb, 0x17, 0x9e, 0x21, 0xff,
-	0xe3, 0xe2, 0x46, 0xb3, 0x94, 0x5c, 0x9d, 0x8b, 0x15, 0x08, 0x23, 0xd5, 0x4d, 0x0c, 0x9f, 0x73,
-	0xd0, 0x06, 0xbf, 0x42, 0x6d, 0x0a, 0x85, 0xe2, 0x34, 0xcf, 0x19, 0xf5, 0xbd, 0x63, 0xef, 0x65,
-	0x7b, 0xd0, 0xea, 0x51, 0xce, 0x7a, 0x97, 0x39, 0xa3, 0x31, 0x72, 0x68, 0xf1, 0x3b, 0xfc, 0xe2,
-	0xa1, 0xee, 0x1e, 0x21, 0xbd, 0x94, 0x42, 0x03, 0x7e, 0x8e, 0x0e, 0xb4, 0x21, 0x26, 0xd7, 0x56,
-	0xa4, 0x33, 0x68, 0x5b, 0x91, 0xc4, 0x96, 0xe2, 0x5b, 0xa8, 0x20, 0x29, 0x20, 0x5a, 0x0a, 0xbf,
-	0xb1, 0x41, 0x8a, 0x6d, 0x29, 0xbe, 0x85, 0xf0, 0x6b, 0xd4, 0x62, 0xa5, 0xbc, 0xdf, 0xb4, 0x8e,
-	0x0e, 0x2d, 0x6f, 0x44, 0x14, 0xbd, 0x26, 0x0a, 0xe2, 0x35, 0x1e, 0x7e, 0xf3, 0x50, 0x77, 0x34,
-	0x79, 0x2f, 0xf9, 0x52, 0x0a, 0x10, 0xe6, 0x5c, 0xcc, 0xe5, 0x10, 0xcc, 0x5f, 0x8c, 0x87, 0xfb,
-	0xa8, 0x93, 0x96, 0x32, 0x8e, 0xde, 0xd8, 0xa6, 0x1f, 0x56, 0x04, 0xdb, 0xf1, 0x62, 0xb3, 0x43,
-	0x10, 0x0e, 0xd6, 0x6d, 0x6b, 0x83, 0x76, 0x41, 0x38, 0x84, 0xdf, 0x77, 0x2d, 0x26, 0x77, 0xcb,
-	0x22, 0x1e, 0xa0, 0xfb, 0xe9, 0x82, 0x88, 0x0c, 0xb4, 0x7f, 0xcf, 0x2a, 0xfa, 0x56, 0x71, 0x2c,
-	0x29, 0x9b, 0x33, 0x32, 0xbb, 0x82, 0xca, 0x7d, 0x5c, 0x12, 0xc3, 0x39, 0x0a, 0xf6, 0x4d, 0xf5,
-	0xaf, 0xcf, 0x21, 0xfc, 0xea, 0xa1, 0x27, 0x89, 0x21, 0xca, 0x8c, 0x8b, 0x18, 0x30, 0x91, 0x7d,
-	0xb0, 0x1f, 0xe4, 0x3f, 0x1c, 0xde, 0xd6, 0x2a, 0x9a, 0xbf, 0x59, 0xc5, 0xe0, 0x47, 0x03, 0x75,
-	0x2f, 0x88, 0x61, 0x2b, 0x18, 0x4d, 0xc6, 0x55, 0x3e, 0x13, 0x17, 0x4f, 0x3c, 0x42, 0x8f, 0xf6,
-	0x58, 0xc6, 0xbf, 0x9e, 0x71, 0x70, 0x5c, 0x3a, 0xad, 0x9b, 0xad, 0xef, 0xe1, 0x09, 0x7a, 0x3c,
-	0x04, 0xb3, 0x13, 0x3b, 0xfc, 0xd4, 0xf6, 0xd6, 0xe5, 0x3a, 0x78, 0x56, 0x07, 0x57, 0xc2, 0x67,
-	0x08, 0x0f, 0xc1, 0x6c, 0x6d, 0x10, 0xbb, 0xbe, 0xda, 0x40, 0x05, 0x1d, 0x8b, 0x57, 0x68, 0xdf,
-	0xc3, 0x97, 0x08, 0x27, 0x7f, 0xa8, 0xb3, 0xbe, 0xfa, 0xe0, 0xa8, 0x16, 0x77, 0x06, 0xdf, 0xbd,
-	0xfd, 0xf4, 0x26, 0x63, 0x66, 0x91, 0xcf, 0x7a, 0xa9, 0xe4, 0x91, 0x5c, 0x82, 0x48, 0xa5, 0xa2,
-	0x91, 0xdb, 0xc0, 0xc9, 0xfa, 0x45, 0x3c, 0x61, 0xc2, 0x80, 0x9a, 0x93, 0x14, 0xa2, 0xd5, 0x69,
-	0x94, 0xc9, 0x88, 0x72, 0x36, 0x3b, 0xb0, 0x0f, 0xdf, 0xe9, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff,
-	0x23, 0x94, 0xd9, 0x06, 0x41, 0x05, 0x00, 0x00,
+	// 487 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x54, 0xd1, 0x8a, 0xd3, 0x40,
+	0x14, 0x25, 0xad, 0xac, 0xf4, 0xd6, 0x2d, 0x38, 0xfa, 0x90, 0x46, 0x74, 0x97, 0x88, 0x20, 0xca,
+	0x36, 0xa5, 0xfb, 0x24, 0xbe, 0xa9, 0x6c, 0xbb, 0x0f, 0x5d, 0x24, 0x61, 0x29, 0xf8, 0x52, 0xa6,
+	0x99, 0xdb, 0x74, 0x60, 0x67, 0xa6, 0x66, 0x26, 0x5d, 0xf6, 0x37, 0xf4, 0x07, 0xfc, 0x28, 0x3f,
+	0xc2, 0xcf, 0x90, 0xcc, 0x6c, 0xd3, 0xd2, 0x6d, 0x44, 0x44, 0xc1, 0xb7, 0xe4, 0x9e, 0x73, 0x0f,
+	0xe7, 0xce, 0x9d, 0x33, 0x70, 0xc4, 0x04, 0x8f, 0x16, 0xd7, 0x53, 0x41, 0x25, 0xcd, 0x50, 0xa0,
+	0x34, 0x53, 0x8d, 0xf9, 0x8a, 0xa7, 0xd8, 0x5b, 0xe6, 0xca, 0x28, 0xd2, 0x64, 0x82, 0x07, 0x0f,
+	0x4b, 0x56, 0xaa, 0x84, 0x50, 0x52, 0xbb, 0x7a, 0xf0, 0xc0, 0x35, 0xba, 0xbf, 0xf0, 0x0c, 0xfc,
+	0x8f, 0x8b, 0x1b, 0xcd, 0x53, 0x7a, 0x75, 0x2e, 0x57, 0x28, 0x8d, 0xca, 0x6f, 0x62, 0xfc, 0x5c,
+	0xa0, 0x36, 0xe4, 0x15, 0xb4, 0x19, 0x96, 0x8a, 0xd3, 0xa2, 0xe0, 0xcc, 0xf7, 0x8e, 0xbd, 0x97,
+	0xed, 0x41, 0xab, 0xc7, 0x04, 0xef, 0x5d, 0x16, 0x9c, 0xc5, 0xe0, 0xd0, 0xf2, 0x3b, 0xfc, 0xe2,
+	0x41, 0x77, 0x8f, 0x90, 0x5e, 0x2a, 0xa9, 0x91, 0x3c, 0x87, 0x03, 0x6d, 0xa8, 0x29, 0xb4, 0x15,
+	0xe9, 0x0c, 0xda, 0x56, 0x24, 0xb1, 0xa5, 0xf8, 0x16, 0x2a, 0x49, 0x39, 0x52, 0xad, 0xa4, 0xdf,
+	0xd8, 0x22, 0xc5, 0xb6, 0x14, 0xdf, 0x42, 0xe4, 0x35, 0xb4, 0xf8, 0x5a, 0xde, 0x6f, 0x5a, 0x47,
+	0x87, 0x96, 0x37, 0xa2, 0x39, 0xbb, 0xa6, 0x39, 0xc6, 0x1b, 0x3c, 0xfc, 0xe6, 0x41, 0x77, 0x34,
+	0x79, 0xaf, 0xc4, 0x52, 0x49, 0x94, 0xe6, 0x5c, 0xce, 0xd5, 0x10, 0xcd, 0x1f, 0x8c, 0x47, 0xfa,
+	0xd0, 0x49, 0xd7, 0x32, 0x8e, 0xde, 0xd8, 0xa5, 0x1f, 0x56, 0x04, 0xdb, 0xf1, 0x62, 0xbb, 0x43,
+	0x52, 0x81, 0xd6, 0x6d, 0x6b, 0x8b, 0x76, 0x41, 0x05, 0x86, 0xdf, 0xef, 0x5a, 0x4c, 0xfe, 0x2f,
+	0x8b, 0x64, 0x00, 0xf7, 0xd3, 0x05, 0x95, 0x19, 0x6a, 0xff, 0x9e, 0x55, 0xf4, 0xad, 0xe2, 0x58,
+	0x31, 0x3e, 0xe7, 0x74, 0x76, 0x85, 0x95, 0xfb, 0x78, 0x4d, 0x0c, 0xe7, 0x10, 0xec, 0x9b, 0xea,
+	0x6f, 0x5f, 0x87, 0xf0, 0xab, 0x07, 0x4f, 0x12, 0x43, 0x73, 0x33, 0x2e, 0x63, 0xc0, 0x65, 0xf6,
+	0xc1, 0x1e, 0xc8, 0x3f, 0xb8, 0x78, 0x3b, 0xab, 0x68, 0xfe, 0x62, 0x15, 0x83, 0x1f, 0x0d, 0xe8,
+	0x5e, 0x50, 0xc3, 0x57, 0x38, 0x9a, 0x8c, 0xab, 0x7c, 0x26, 0x2e, 0x9e, 0x24, 0x81, 0x47, 0x7b,
+	0x2c, 0x93, 0xda, 0x53, 0x0d, 0x8e, 0xd7, 0xa6, 0xeb, 0xc6, 0xec, 0x7b, 0x64, 0x02, 0x8f, 0x87,
+	0x68, 0xee, 0x24, 0x90, 0x3c, 0xb5, 0xbd, 0x75, 0x11, 0x0f, 0x9e, 0xd5, 0xc1, 0x95, 0xf0, 0x19,
+	0x90, 0x21, 0x9a, 0x9d, 0x65, 0x12, 0xd7, 0x57, 0x9b, 0xad, 0xa0, 0x63, 0xf1, 0x0a, 0xed, 0x7b,
+	0xe4, 0x12, 0x48, 0xf2, 0x9b, 0x3a, 0x9b, 0x00, 0x04, 0x47, 0xb5, 0xb8, 0x33, 0xf8, 0xee, 0xed,
+	0xa7, 0x37, 0x19, 0x37, 0x8b, 0x62, 0xd6, 0x4b, 0x95, 0x88, 0xd4, 0x12, 0x65, 0xaa, 0x72, 0x16,
+	0xb9, 0x65, 0x9c, 0x6c, 0x1e, 0xc7, 0x13, 0x2e, 0x0d, 0xe6, 0x73, 0x9a, 0x62, 0xb4, 0x3a, 0x8d,
+	0x32, 0x15, 0x31, 0xc1, 0x67, 0x07, 0xf6, 0x0d, 0x3c, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, 0xd3,
+	0x67, 0x56, 0xf0, 0x4c, 0x05, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -395,7 +395,15 @@
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type NativeHWManagementServiceClient interface {
 	// Initializes context for a device and sets up required states
-	StartManagingDevice(ctx context.Context, in *Hardware, opts ...grpc.CallOption) (NativeHWManagementService_StartManagingDeviceClient, error)
+	// In the call to StartManagingDevice, the fields of ModifiableComponent which are relevant
+	// and their meanings in this context is mentioned below:
+	// name = The unique name that needs to be assigned to this hardware;
+	// class = COMPONENT_TYPE_UNDEFINED;
+	// parent = nil;
+	// alias = Optional;
+	// asset_id = Optional;
+	// uri = IP Address of the Hardware;
+	StartManagingDevice(ctx context.Context, in *ModifiableComponent, opts ...grpc.CallOption) (NativeHWManagementService_StartManagingDeviceClient, error)
 	// Get the HW inventory details of the Device
 	GetPhysicalInventory(ctx context.Context, in *PhysicalInventoryRequest, opts ...grpc.CallOption) (NativeHWManagementService_GetPhysicalInventoryClient, error)
 	// Get the details of a particular HW component
@@ -412,7 +420,7 @@
 	return &nativeHWManagementServiceClient{cc}
 }
 
-func (c *nativeHWManagementServiceClient) StartManagingDevice(ctx context.Context, in *Hardware, opts ...grpc.CallOption) (NativeHWManagementService_StartManagingDeviceClient, error) {
+func (c *nativeHWManagementServiceClient) StartManagingDevice(ctx context.Context, in *ModifiableComponent, opts ...grpc.CallOption) (NativeHWManagementService_StartManagingDeviceClient, error) {
 	stream, err := c.cc.NewStream(ctx, &_NativeHWManagementService_serviceDesc.Streams[0], "/dmi.NativeHWManagementService/StartManagingDevice", opts...)
 	if err != nil {
 		return nil, err
@@ -520,7 +528,15 @@
 // NativeHWManagementServiceServer is the server API for NativeHWManagementService service.
 type NativeHWManagementServiceServer interface {
 	// Initializes context for a device and sets up required states
-	StartManagingDevice(*Hardware, NativeHWManagementService_StartManagingDeviceServer) error
+	// In the call to StartManagingDevice, the fields of ModifiableComponent which are relevant
+	// and their meanings in this context is mentioned below:
+	// name = The unique name that needs to be assigned to this hardware;
+	// class = COMPONENT_TYPE_UNDEFINED;
+	// parent = nil;
+	// alias = Optional;
+	// asset_id = Optional;
+	// uri = IP Address of the Hardware;
+	StartManagingDevice(*ModifiableComponent, NativeHWManagementService_StartManagingDeviceServer) error
 	// Get the HW inventory details of the Device
 	GetPhysicalInventory(*PhysicalInventoryRequest, NativeHWManagementService_GetPhysicalInventoryServer) error
 	// Get the details of a particular HW component
@@ -534,7 +550,7 @@
 }
 
 func _NativeHWManagementService_StartManagingDevice_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(Hardware)
+	m := new(ModifiableComponent)
 	if err := stream.RecvMsg(m); err != nil {
 		return err
 	}
diff --git a/protos/dmi/hw_management_service.proto b/protos/dmi/hw_management_service.proto
index 5b780e7..602aedf 100644
--- a/protos/dmi/hw_management_service.proto
+++ b/protos/dmi/hw_management_service.proto
@@ -44,7 +44,15 @@
 
 service NativeHWManagementService {
     // Initializes context for a device and sets up required states
-    rpc StartManagingDevice(Hardware) returns(stream StartManagingDeviceResponse);
+    // In the call to StartManagingDevice, the fields of ModifiableComponent which are relevant
+    // and their meanings in this context is mentioned below:
+    // name = The unique name that needs to be assigned to this hardware;
+    // class = COMPONENT_TYPE_UNDEFINED;
+    // parent = nil;
+    // alias = Optional;
+    // asset_id = Optional;
+    // uri = IP Address of the Hardware;
+    rpc StartManagingDevice(ModifiableComponent) returns(stream StartManagingDeviceResponse);
 
     // Get the HW inventory details of the Device
     rpc GetPhysicalInventory(PhysicalInventoryRequest) returns(stream PhysicalInventoryResponse);
