def _add_data(self, eopatch, data):
        """ Adds downloaded data to EOPatch """
        valid_mask = data[..., -1]
        data = data[..., :-1]

        if data.ndim == 3:
            data = data.reshape(data.shape + (1,))
        if not self.feature_type.is_time_dependent():
            if data.shape[0] > 1:
                raise ValueError('Cannot save time dependent data to time independent feature')
            data = data.squeeze(axis=0)
        if self.feature_type.is_discrete():
            data = data.astype(np.int32)

        eopatch[self.feature_type][self.feature_name] = data

        mask_feature_type, mask_feature_name = next(self.valid_data_mask_feature())

        max_value = self.image_format.get_expected_max_value()
        valid_data = (valid_mask == max_value).astype(np.bool).reshape(valid_mask.shape + (1,))

        if mask_feature_name not in eopatch[mask_feature_type]:
            eopatch[mask_feature_type][mask_feature_name] = valid_data