def name(self, args):
        """Display and create a new Revision by name
        
        Parameters
        ----------
        args : list(str)
            List of strings with subcommands

        Returns
        -------
        list(str) - the response messages string array
        """

        if not self.can_edit:
            raise Exception('You do not have permission to add revision text')
        messages = []
        rev_name = ' '.join(args[1:])
        if args[1] == 'rename':
            if len(args) < 4:
                raise Exception(
                    'syntax: ```css\n.d revision rename "ORIGINAL NAME" "NEW NAME"```'
                )
            rev_name_orig = ' '.join(args[2])
            rev_name_new = ' '.join(args[3])
            revision_new = Revision().find(rev_name_new)
            if revision_new:
                raise Exception(
                    f'Cannot rename to _{rev_name_new}_. Revision already exists'
                )
            else:
                revision = Revision().find(rev_name_orig)
                if not rev_name_orig:
                    raise Exception(
                        f'Cannot find original revision named _{rev_name_orig}_'
                    )
                revision.name = rev_name_new
                revision_svc.save(revision, self.user)
                messages.append(revision.get_string(self.user))
        else:
            if len(args) < 4:
                raise Exception(
                    'syntax: ```css\n.d revision name "NAME" "NUMBER" "TEXT"```'
                )
            rev_name = args[1]
            rev_number = args[2]
            rev_text = args[3]
            params = {'name': rev_name, 'number': rev_number, 'text': rev_text}
            revision = Revision().create_new(**params)
            messages.append(revision.get_string(self.user))
        return messages