<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_files(self, common_name, x509s, files=None, parent_ca='', is_ca=False, signees=None, serial=0, overwrite=False):
 """Add a set files comprising a certificate to Certipy Used with all the defaults, Certipy will manage creation of file paths to be used to store these files to disk and automatically calls save on all TLSFiles that it creates (and where it makes sense to). """


        if common_name in self.store and not overwrite:
            raise CertExistsError(
                "Certificate {name} already exists!"
                " Set overwrite=True to force add."
                .format(name=common_name))
        elif common_name in self.store and overwrite:
            record = self.get_record(common_name)
            serial = int(record['serial'])
            record['serial'] = serial + 1
            TLSFileBundle(common_name).from_record(record).save_x509s(x509s)
        else:
            file_base_tmpl = "{prefix}/{cn}/{cn}"
            file_base = file_base_tmpl.format(
                prefix=self.containing_dir, cn=common_name
            )
            try:
                ca_record = self.get_record(parent_ca)
                ca_file = ca_record['files']['cert']
            except CertNotFoundError:
                ca_file = ''
            files = files or {
                'key': file_base + '.key',
                'cert': file_base + '.crt',
                'ca': ca_file,
            }
            bundle = TLSFileBundle(
                common_name, files=files, x509s=x509s, is_ca=is_ca,
                serial=serial, parent_ca=parent_ca, signees=signees)
            self.store[common_name] = bundle.to_record()
        self.save()