def __call__(cls, *args, name=None, **kwargs):
    """
        name is reserved kwarg for naming instances

        TODO: Generalize handling of instance parameters
        """
    inst_kwargs = {}
    if name is not None:
        inst_kwargs['name'] = name
    return cls.generate(*args, **kwargs)(**inst_kwargs)
