diff --git a/scripts/build_dlc.py b/scripts/build_dlc.py
index 3783a1d..82552fc 100644
--- a/scripts/build_dlc.py
+++ b/scripts/build_dlc.py
@@ -33,6 +33,7 @@
 )
 
 DLC_ID_KEY = 'DLC_ID'
+DLC_PACKAGE_KEY = 'DLC_PACKAGE'
 DLC_NAME_KEY = 'DLC_NAME'
 DLC_APPID_KEY = 'DLC_RELEASE_APPID'
 
@@ -72,7 +73,7 @@
   _DLC_ROOT_DIR = 'root'
 
   def __init__(self, src_dir, sysroot, install_root_dir, fs_type,
-               pre_allocated_blocks, version, dlc_id, name):
+               pre_allocated_blocks, version, dlc_id, dlc_package, name):
     """Object initializer.
 
     Args:
@@ -83,6 +84,7 @@
       pre_allocated_blocks: (int) number of blocks pre-allocated on device.
       version: (str) DLC version.
       dlc_id: (str) DLC ID.
+      dlc_package: (str) DLC Package.
       name: (str) DLC name.
     """
     self.src_dir = src_dir
@@ -92,31 +94,21 @@
     self.pre_allocated_blocks = pre_allocated_blocks
     self.version = version
     self.dlc_id = dlc_id
+    self.dlc_package = dlc_package
     self.name = name
 
     self.meta_dir = os.path.join(self.install_root_dir, DLC_META_DIR,
-                                 self.dlc_id)
+                                 self.dlc_id, self.dlc_package)
     self.image_dir = os.path.join(self.install_root_dir, DLC_IMAGE_DIR,
-                                  self.dlc_id)
+                                  self.dlc_id, self.dlc_package)
     osutils.SafeMakedirs(self.meta_dir)
     osutils.SafeMakedirs(self.image_dir)
 
     # Create path for all final artifacts.
-    self.dest_image = os.path.join(self.image_dir, self.GetImageFileName())
+    self.dest_image = os.path.join(self.image_dir, 'dlc.img')
     self.dest_table = os.path.join(self.meta_dir, 'table')
     self.dest_imageloader_json = os.path.join(self.meta_dir, 'imageloader.json')
 
-  def GetImageFileName(self):
-    """Returns the image file name created based on the dlc_id.
-
-    This probably will be replaced by the partition name once we move to a
-    multip-partition DLC.
-
-    Returns:
-      [str]: The image file name for the DLC.
-    """
-    return 'dlc_%s.img' % self.dlc_id
-
   def SquashOwnerships(self, path):
     """Squash the owernships & permissions for files.
 
@@ -205,6 +197,7 @@
 
     fields = {
         DLC_ID_KEY: self.dlc_id,
+        DLC_PACKAGE_KEY: self.dlc_package,
         DLC_NAME_KEY: self.name,
         # The DLC appid is generated by concatenating the platform appid with
         # the DLC ID using an underscore. This pattern should never be changed
@@ -255,6 +248,7 @@
     return {
         'fs-type': self.fs_type,
         'id': self.dlc_id,
+        'package': self.dlc_package,
         'image-sha256-hash': image_hash,
         'image-type': 'dlc',
         'is-removable': True,
@@ -361,6 +355,9 @@
                        'be pre-allocated on device.')
   one_dlc.add_argument('--version', metavar='VERSION', help='DLC Version.')
   one_dlc.add_argument('--id', metavar='ID', help='DLC ID (unique per DLC).')
+  one_dlc.add_argument('--package', metavar='PACKAGE',
+                       help='The package ID that is unique within a DLC, One'
+                       ' DLC cannot have duplicate package IDs.')
   one_dlc.add_argument('--name', metavar='NAME',
                        help='A human-readable name for the DLC.')
   one_dlc.add_argument('--fs-type', metavar='FS_TYPE', default=_SQUASHFS_TYPE,
@@ -378,7 +375,7 @@
   # Make sure if the intention is to build one DLC, all the required arguments
   # are passed.
   per_dlc_req_args = ('src_dir', 'pre_allocated_blocks', 'version', 'id',
-                      'name')
+                      'package', 'name')
   if (opts.id and
       not all(vars(opts)[arg] is not None for arg in per_dlc_req_args)):
     raise Exception('If the intention is to build only one DLC, all the flags'
@@ -403,6 +400,7 @@
                                  pre_allocated_blocks=opts.pre_allocated_blocks,
                                  version=opts.version,
                                  dlc_id=opts.id,
+                                 dlc_package=opts.package,
                                  name=opts.name)
     dlc_generator.GenerateDLC()
   else:
diff --git a/scripts/build_dlc_unittest.py b/scripts/build_dlc_unittest.py
index 926f272..a0a250d 100644
--- a/scripts/build_dlc_unittest.py
+++ b/scripts/build_dlc_unittest.py
@@ -24,6 +24,7 @@
 _PRE_ALLOCATED_BLOCKS = 100
 _VERSION = '1.0'
 _ID = 'id'
+_PACKAGE = 'package'
 _NAME = 'name'
 _META_DIR = 'opt/google/dlc/'
 _IMAGE_DIR = 'build/rootfs/dlc/'
@@ -64,20 +65,16 @@
                                   pre_allocated_blocks=_PRE_ALLOCATED_BLOCKS,
                                   version=_VERSION,
                                   dlc_id=_ID,
+                                  dlc_package=_PACKAGE,
                                   name=_NAME)
 
-  def testGetImageFileName(self):
-    """Tests getting the correct image file name."""
-    generator = self.GetDlcGenerator()
-    self.assertEqual(generator.GetImageFileName(), 'dlc_%s.img' % _ID)
-
   def testSetInstallDir(self):
     """Tests install_root_dir is used correclty."""
     generator = self.GetDlcGenerator()
     self.assertEqual(generator.meta_dir,
-                     os.path.join(self.tempdir, _META_DIR, _ID))
+                     os.path.join(self.tempdir, _META_DIR, _ID, _PACKAGE))
     self.assertEqual(generator.image_dir,
-                     os.path.join(self.tempdir, _IMAGE_DIR, _ID))
+                     os.path.join(self.tempdir, _IMAGE_DIR, _ID, _PACKAGE))
 
   def testSquashOwnerships(self):
     """Test build_dlc.SquashOwnershipsTest"""
@@ -122,6 +119,7 @@
     expected_lsb_release = '\n'.join([
         'DLC_ID=%s' % _ID,
         'DLC_NAME=%s' % _NAME,
+        'DLC_PACKAGE=%s' % _PACKAGE,
         'DLC_RELEASE_APPID=foo_%s' % _ID,
     ]) + '\n'
 
@@ -148,7 +146,8 @@
     self.assertEqual(content, {
         'fs-type': _FS_TYPE_SQUASHFS,
         'pre-allocated-size': _PRE_ALLOCATED_BLOCKS * 4096,
-        'id': 'id',
+        'id': _ID,
+        'package': _PACKAGE,
         'size': blocks * 4096,
         'table-sha256-hash': 'deadbeef',
         'name': _NAME,
