def setup_mflist_budget_obs(list_filename,flx_filename="flux.dat",
                            vol_filename="vol.dat",start_datetime="1-1'1970",prefix='',
                            save_setup_file=False):
    """ setup observations of budget volume and flux from modflow list file.  writes
    an instruction file and also a _setup_.csv to use when constructing a pest
    control file

    Parameters
    ----------
    list_filename : str
            modflow list file
    flx_filename : str
        output filename that will contain the budget flux observations. Default is
        "flux.dat"
    vol_filename : str)
        output filename that will contain the budget volume observations.  Default
        is "vol.dat"
    start_datetime : str
        an str that can be parsed into a pandas.TimeStamp.  used to give budget
        observations meaningful names
    prefix : str
        a prefix to add to the water budget observations.  Useful if processing
        more than one list file as part of the forward run process. Default is ''.
    save_setup_file : (boolean)
        a flag to save _setup_<list_filename>.csv file that contains useful
        control file information

    Returns
    -------
    df : pandas.DataFrame
        a dataframe with information for constructing a control file.  If INSCHEK fails
        to run, reutrns None

    Note
    ----
    This function uses INSCHEK to get observation values; the observation values are
    the values of the list file list_filename.  If INSCHEK fails to run, the obseravtion
    values are set to 1.0E+10

    the instruction files are named <flux_file>.ins and <vol_file>.ins, respectively

    It is recommended to use the default values for flux_file and vol_file.


    """



    flx,vol = apply_mflist_budget_obs(list_filename,flx_filename,vol_filename,
                                      start_datetime)
    _write_mflist_ins(flx_filename+".ins",flx,prefix+"flx")
    _write_mflist_ins(vol_filename+".ins",vol, prefix+"vol")

    #run("inschek {0}.ins {0}".format(flx_filename))
    #run("inschek {0}.ins {0}".format(vol_filename))

    try:
        #os.system("inschek {0}.ins {0}".format(flx_filename))
        #os.system("inschek {0}.ins {0}".format(vol_filename))
        run("inschek {0}.ins {0}".format(flx_filename))
        run("inschek {0}.ins {0}".format(vol_filename))

    except:
        print("error running inschek")
        return None
    flx_obf = flx_filename+".obf"
    vol_obf = vol_filename + ".obf"
    if os.path.exists(flx_obf) and os.path.exists(vol_obf):
        df = pd.read_csv(flx_obf,delim_whitespace=True,header=None,names=["obsnme","obsval"])
        df.loc[:,"obgnme"] = df.obsnme.apply(lambda x: x[:-9])
        df2 = pd.read_csv(vol_obf, delim_whitespace=True, header=None, names=["obsnme", "obsval"])
        df2.loc[:, "obgnme"] = df2.obsnme.apply(lambda x: x[:-9])
        df = df.append(df2)
        if save_setup_file:
            df.to_csv("_setup_"+os.path.split(list_filename)[-1]+'.csv',index=False)
        df.index = df.obsnme
        return df