def register(self, newitems, *args, **kwargs):
        """
        Register newitems in registry.

        :param newitems: New items to add to registry. When registering new
            items, keys are not allowed to override existing keys in the
            registry.
        :type newitems: mapping
        :param args: Positional arguments with meta data corresponding to order
            of meta names class attributes
        :param kwargs: Maps of corresponding meta for new keys. Each set of
            meta keys must be a subset of the new item keys.
        :raises:
            :exc:`~simkit.core.exceptions.DuplicateRegItemError`,
            :exc:`~simkit.core.exceptions.MismatchRegMetaKeysError`
        """
        newkeys = newitems.viewkeys()  # set of the new item keys
        if any(self.viewkeys() & newkeys):  # duplicates
            raise DuplicateRegItemError(self.viewkeys() & newkeys)
        self.update(newitems)  # register new item
        # update meta fields
        kwargs.update(zip(self.meta_names, args))
        for k, v in kwargs.iteritems():
            meta = getattr(self, k)  # get the meta attribute
            if v:
                if not v.viewkeys() <= newkeys:
                    raise MismatchRegMetaKeysError(newkeys - v.viewkeys())
                meta.update(v)
Register newitems in registry.

        :param newitems: New items to add to registry. When registering new
            items, keys are not allowed to override existing keys in the
            registry.
        :type newitems: mapping
        :param args: Positional arguments with meta data corresponding to order
            of meta names class attributes
        :param kwargs: Maps of corresponding meta for new keys. Each set of
            meta keys must be a subset of the new item keys.
        :raises:
            :exc:`~simkit.core.exceptions.DuplicateRegItemError`,
            :exc:`~simkit.core.exceptions.MismatchRegMetaKeysError`