def change_header_pointing(header, ra_ref=0.0, dec_ref=0.0, pa_v3=0.0):
    """
    Update a FITS header for a new pointing (center + roll).  
    
    Parameters
    ----------
    header : `~astropy.io.fits.Header`
        Parent header (must contain `V2_REF`, `V3_REF` keywords).
    
    ra_ref, dec_ref : float
        Pointing center, in decimal degrees, at reference the pixel defined 
        in.
        
    pa_v3 : float
        Position angle of the telescope V3 axis, degrees.
    
    .. warning::
    
    Doesn't update PC keywords based on pa_v3, which would rather have to 
    be computed from the new `gwcs`.

    """
    from jwst.lib.set_telescope_pointing import compute_local_roll
    v2_ref = header['V2_REF']
    v3_ref = header['V3_REF']
    args = []
    for v in (pa_v3, ra_ref, dec_ref, v2_ref, v3_ref):
        if hasattr(v, 'value'):
            args.append(v.value)
        else:
            args.append(v)
    roll_ref = compute_local_roll(*tuple(args))
    new_header = header.copy()
    new_header['XPA_V3'] = args[0]
    new_header['CRVAL1'] = new_header['RA_REF'] = args[1]
    new_header['CRVAL2'] = new_header['DEC_REF'] = args[2]
    new_header['ROLL_REF'] = roll_ref
    return new_header
