def __call__(cls, *args, **kwargs):
    """ Overload to prevent `Flat(...)` being used """
    g = cls._expected_grade(*args, **kwargs)
    if not cls.__instantiated:
        if g is None:
            raise TypeError('Must construct as {}[n](...)'.format(cls.__name__)
                )
        return cls[g].__call__(*args, **kwargs)
    if g is not None and g != cls._grade:
        raise ValueError(
            'Grade inferred from arguments ({}) does not match class grade ({})'
            .format(g, cls._grade))
    return super().__call__(*args, **kwargs)
