def process(self, form, post):
        if not isinstance(form, FormMeta):
            raise TypeError('Given form is not a valid WTForm.')
        re_field_name = re.compile(r'\%([a-zA-Z0-9_]*)\%')
        class F(form):
            pass
        for field, data in post.iteritems():
            if field in F():
                continue
            else:
                if field in self._dyn_fields:
                    field_cname = field
                    current_set_number = None
                elif (field.split('_')[-1].isdigit()
                      and field[:-(len(field.split('_')[-1]))-1] in self._dyn_fields.keys()):
                    field_cname = field[:-(len(field.split('_')[-1]))-1]
                    current_set_number = str(field.split('_')[-1])
                else:
                    continue
            validators = []
            if 'validators' in self._dyn_fields[field_cname]:
                for validator in self._dyn_fields[field_cname]['validators']:
                    args = []
                    kwargs = {}
                    if 'args' in self._dyn_fields[field_cname]\
                       [validator.__name__]:
                        if not current_set_number:
                            args = self._dyn_fields[field_cname]\
                                   [validator.__name__]['args']
                        else:
                            for arg in self._dyn_fields[field_cname]\
                                [validator.__name__]['args']:
                                try:
                                    arg = re_field_name.sub(r'\1'+'_'+current_set_number,
                                                            arg)
                                except:
                                    pass
                                args.append(arg)
                    if 'kwargs' in self._dyn_fields[field_cname]\
                       [validator.__name__]:
                        if not current_set_number:
                            kwargs = self._dyn_fields[field_cname]\
                                     [validator.__name__]['kwargs']
                        else:
                            for key, arg in self.iteritems(self._dyn_fields[field_cname]\
                                [validator.__name__]['kwargs']):
                                try:
                                    arg = re_field_name.sub(r'\1'+'_'+current_set_number,
                                                            arg)
                                except:
                                    pass
                                kwargs[key] = arg
                    validators.append(validator(*args, **kwargs))
            field_type = self._dyn_fields[field_cname]['type']
            field_label = self._dyn_fields[field_cname]['label']
            field_args = self._dyn_fields[field_cname]['args']
            field_kwargs = self._dyn_fields[field_cname]['kwargs']
            setattr(F, field, field_type(field_label,
                                         validators=validators,
                                         *field_args,
                                         **field_kwargs))
        if self.flask_wtf:
            form = F()
        else:
            form = F(post)
        return form