@classmethod
def __construct_direct__(cls, data, mask, **kwargs):
    """
        Shortcut around __init__ for internal use to construct and
        return a new class instance. The returned object should be
        identical to that returned by __init__.

        Notes
        -----
        *   Useful for returning new instances with sliced data/mask
        *   The keyword arguments required to create a full, unbroken
            instance are `dims`, `coords`, `edges`, and `attrs`

        Parameters
        ----------
        data :
        """
    obj = object.__new__(cls)
    for k in kwargs:
        setattr(obj, k, kwargs[k])
    for k, d in zip(['data', 'mask'], [data, mask]):
        setattr(obj, k, d)
        if obj.shape != d.shape:
            try:
                setattr(obj, k, d.reshape(obj.shape))
            except:
                raise ValueError('shape mismatch between data and coordinates')
    return obj
