diff --git a/doc/Changes.tex b/doc/Changes.tex
new file mode 100644
index 0000000000000000000000000000000000000000..c6c168d833862b842cc896d3c5058a5665eeeb46
--- /dev/null
+++ b/doc/Changes.tex
@@ -0,0 +1,43 @@
+\section{Changes}
+
+\index{Frida!history|(}%
+\index{History of Frida|(}%
+Development of Frida was started by J.~Wuttke in 1990.
+\index{Wuttke, Joachim}%
+Originally, the software was called IDA (``inelastic data analysis'').
+\index{IDA}%
+The code was written in Fortran77,
+\index{Fortran}%
+and depended on the proprietary NAG library for numerics, and on proprietary compilers.
+It was freely given to interested scientist,
+and some modules were contributed back.
+When J.~Wuttke left the field in 2001,
+maintenance of IDA was continued in the group of A.~Meyer at DLR Köln.
+\index{Meyer, Andreas}%
+
+In 2001--2003, J.~Wuttke wrote a C$++$ program
+\index{C$++$@C++}%
+for the analysis of time series,
+heavily drawing on concepts from IDA.
+When he came back to neutron science in 2005,
+he used this code as base for a modernized rewrite of IDA.
+By then, publication of open-source software on the world wide web had become commonplace.
+The akronym IDA, however, had already been taken by other software projects.
+Therefore, J.~Wuttke renamed his project Frida (``Fast reliable interactive data analysis'').
+\index{Frida!name}%
+The Fortran code IDA became Frida1,
+\index{Frida1}%
+and the new C$++$ code was called Frida2.
+
+Since April 2008,
+code changes are tracked in the version control system \texttt{git},
+\index{Version control}%
+\index{git}%
+currently located at \url{git://apps.jcns.fz-juelich.de/frida.git/}.
+Since April 2010,
+changes are described in the file \texttt{CHANGELOG},
+which is part of the source,
+and also is available online at \url{http://apps.jcns.fz-juelich.de/src/frida/frida2-CHANGELOG}.
+
+\index{Frida!history|)}%
+\index{History of Frida|)}%
diff --git a/doc/DataModel.tex b/doc/DataModel.tex
new file mode 100644
index 0000000000000000000000000000000000000000..66b9bdd0717a13bb8101e6afd9d67f2539ac40ed
--- /dev/null
+++ b/doc/DataModel.tex
@@ -0,0 +1,31 @@
+\section{Data Model}
+
+Frida is basically a huge collection of methods that operate on files.
+The structure of these files shall be designated as Frida's \E{data model}.
+\index{Data model}%
+
+The data model is the most basic design feature of Frida.
+Internal and external storage formats and all method interfaces depend on it.
+It has evolved only little since the inception of Frida,
+and changes always go towards greater genericity.\footnote
+{Major changes were the addition of multi-$z$-coordinates in 1996,
+the insertion of an abstraction layer for $x-y-dy$ in 2006,
+and full support for $r$ pars in 2010.}
+Therefore, Frida will always remain backward compatible
+\index{Compatibility!data}%
+in the sense
+that older data can still be treated with newer software versions.
+
+Frida supports two types of files: \E{data files} and \E{curve files}.
+
+\subsection{Data files}
+
+A \E{data file} is basically an array of »spectra«. A \E{spectrum} contains $x,y$ data pairs (or $x,y,dy$ triples, if errors are given). The physical meaning of $x$ and $y$ is stored as »coordinate« information in the »meta data« of the file. A \E{coordinate} consists of »name« and »unit«, e.g. "mass (kg)" or "counts (Hz)".
+
+If a data file contains more than one spectrum, it is mandatory that there is a $z$ coordinate; there may be several (denoted $z0, z1, ...$). Each spectrum contains as many $z$ entries as there are $z$ coordinates.
+
+There are additional \E{file meta data}, like the »file name« and the »documentation« array. Furthermore, a file may contain an arbitrary number of »file constants«. An \E{file constant} is a coordinate-value pair, denoted $r0, r1, ...$. For instance, $r0$ may contain the coordinate "T (K)" and the value 320 to indicate a temperature of 320 K.
+
+\subsection{Curve files}
+
+A \E{curve file} contains additional file meta data, most importantly a \E{curve definition}. This is either an »expression« or a »script command«. Instead of a set of »spectra«, a curve file contains a set of »curves«. Each \E{curve} contains an array of curve parameters $p0, p1, ...$ (as many as prescribed by the curve definition), an array of flags that indicate whether a parameter is free or fixed, and a few numeric values $cq0, cq1, cq2$ describing fit quality.
diff --git a/doc/Expressions.tex b/doc/Expressions.tex
new file mode 100644
index 0000000000000000000000000000000000000000..83a76f7a2a84ea5fe5e247d0a0afc0e04bae64a5
--- /dev/null
+++ b/doc/Expressions.tex
@@ -0,0 +1,176 @@
+\section{Expressions}
+
+\subsection{Overview}
+
+Expressions are used in Frida at many different places. Some important uses are:
+
+In calculator mode:
+\begin{lstlisting}
+  > 4+7            # yields 11
+  > sin(pi/2)      # yields 1
+  > y[2,0,7]       # yields the y value of file 2, spectrum 0, point 7
+\end{lstlisting}
+
+In operations like \cmd{ox}, \cmd{oy}, \cmd{op0}, ...:
+\begin{lstlisting}
+  3 > oy x^2       # in file 3 (a data file), set y:=x^2
+  5 > op0 y[4,0,j] # in file 5 (a curve file), initialize p0 with a value taken from file 4
+\end{lstlisting}
+
+In commands \cmd{dp}, \cmd{mr}, \cmd{md}, evaluated as boolean to select data points:
+\begin{lstlisting}
+  3 > dp y<10      # show all points with y<10
+  3 > mr x>0       # retain points with x>0, delete all other points
+  3 > md x<=0      # another way of saying the same
+\end{lstlisting}
+
+Expressions are the standard means to define a fit curve:
+\begin{lstlisting}
+  8 > cc p0+p1*t   # create a curve to fit file 8, using an affine-linear function
+\end{lstlisting}
+
+\subsection{Syntax}
+
+In the following, a very basic variant of Backus-Naur form is used.
+A dot as in \texttt{$\langle$an\_integer\_value.$\rangle$} indicates that the meaning of this node is so obvious that a formal definition is not needed.
+
+\begin{lstlisting}
+  expr:
+    <arithmetic_expr>                     # arithmetic expression
+    <function_evaluation>                 # built-in function
+    resol ( <shift> )                     # Dirac delta function, copies a given resolution function
+    conv ( <theory>, <shift> )            # convolutes 'theory' with a given resolution function
+    <numeric_value>                       # like 1.23
+    <variable_reference>                  # like x[3,0,j]
+    t                                     # running variable for curve evaluation
+    <curve_reference> ( <expr> )          # like c[4](x-0.2)
+The special expressions dirac, conv, t are explained in [[curves]].
+
+  arithmetic_expr:
+    ( <expr> )                            # parentheses around expression change nothing
+    - <expr>                              # negative value
+    ! <expr>                              # boolean negation
+    <expr> <bin_op> <expr>                # binary operator, see below
+    <expr> ? <expr> : <expr>              # conditional evaluation (lower precedence than all bin_op's)
+
+  bin_op: # ordered by decreasing precedence
+    +-                                    # error ( e.g. 193+-2 )
+    ^                                     # exponentiation
+    over                                  # binomial coefficient, 5 over 3 = 5!/3!/2! = 10
+    * | / | mod | div                     # multiplication, division, remainder, integer division
+    + | -                                 # addition, subtraction
+    > | >= | <= | <                       # comparison
+    == | !=                               # equality, inequality
+    xor                                   # boolean exclusive or
+    &&                                    # boolean and
+    ||                                    # boolean or
+
+  function_evaluation:
+    ln ( <expr> )                         # natural logarithm
+    ...                                   # many more functions of one argument
+    min ( <expr>, <expr> )                # the smaller of the two arguments
+    ...                                   # some more functions of two arguments
+    rehavneg ( <expr>, <expr>, <expr> )   # real part of the Havrialiak-Negami function
+    ...                                   # some more functions of three arguments
+for a full listing of built-in functions, see [[built-in functions]], or use \cmd{hf} at the FRIDA main level
+
+  numeric_value:
+    <an_integer_number.>                  # like 8 or -17
+    <a_floating_point_number.>            # like .2 or 2.72 or -3.7e-3
+    pi | e                                # these two mathematic constants are hard-coded
+
+  variable_reference:
+    var_label                             # e.g. y, meaning y[k,j,i] with k,j,i given by context
+    var_label [ <expr> ]                  # e.g. p0[8]
+    jvar_label [ <expr>, <expr> ]         # e.g. z2[6,3]
+    ivar_label [ <expr>, <expr>, <expr> ] # e.g. x[6,3,18]
+\end{lstlisting}
+
+Note: above, "[" and "]" are \E{not} BNF notation to indicate an optional argument; they stand for real brackets. Actually, all indices \E{are} optional: if omitted, the default values k,j,i are filled in, depending on position.
+
+\begin{lstlisting}
+  var_label:
+    k                                     # number of file in online memory
+    r<num.>                               # file constants r0, r1, ...
+    dr<num.>                              # error thereof (not yet implemented)
+    nj                                    # number of spectra
+    jvar_label                            # j-dependent variable (j is the spectrum index)
+
+  jvar_label:
+    j                                     # index of spectrum
+    z<num.>                               # z variables z0, z1, ...
+    dz<num.>                              # error thereof (not yet implemented)
+    p<num.>                               # curve parameters p0, p1, ...
+    dp<num.>                              # error thereof (not yet implemented)
+    cq<num.>                              # curve quality cq0, cq1, cq2
+    ni                                    # number of data points
+    ivar_label                            # i-dependent variable (i is the data point index)
+
+  ivar_label:
+    i                                     # index of data point
+    x                                     # x value
+    y                                     # y value
+    dy                                    # error thereof
+
+  curve_reference:
+    c                                     # c, meaning c[k,j], with k,j given by context
+    c [ <expr> ]                          # e.g. c[3], meaning c[3,j], with j given by context
+    c [ <expr>, <expr> ]                  # e.g. c[3,0]
+\end{lstlisting}
+Same note as for variable\_reference: "[" and "]" are \E{not} BNF notation to indicate an optional argument; they stand for real brackets. All indices \E{are} optional: if omitted, the default values k,j are filled in, depending on position.
+
+\subsection{Context-dependent evaluation: running variables k,j,i}
+
+How expressions are evaluated depends on the context in which they are used. For instance, the way ''dirac'' and ''conv'' are evaluated depends on whether or not a convolutand is set. See [[curves]] for more on this.
+
+In evaluating variable references like ''x'' or ''y[0,k-3,j]'' implicit or explicit use is made of running indices ''k'', ''j'', ''i''. A reference without index, like ''x'', is just a shortcut for ''x[k,j,i]''. Any of these indices may be omitted:
+  * ''x[8]'' stands for ''x[8,j,i]'';
+  * ''x[,3]'' stands for ''x[k,3,i]'';
+  * ''x[,,0]]'' stands for ''x[k,j,0]''; and so on.
+Depending on context, loops are performed over ''k'', ''j'', ''i''.
+
+== Loop over k ==
+
+The variable ''k'' stands for the number of a file in the online memory. Whenever a command is performed for a given file selection, this can be seen as running a loop over ''k''. For instance, in the simple command
+\begin{lstlisting}
+  3-5 > . y[,0,3]
+\end{lstlisting}
+the value y[k,0,3] is shown, with ''k'' taking successively the values 3, 4, 5, as given by the preset file selection indicated in the prompt.
+
+A more complex example: files 10 to 13 are curve files. Then the command
+\begin{lstlisting}
+  ? > 10:13 cd k-8
+\end{lstlisting}
+means, that curve file 10 shall be fitted to data file 10-8=2, curve file 11 to data file 3, and so on.
+
+== Loops over j and i ==
+
+A command like \cmd{oy} implies a loop over ''j'' and ''i'':
+\begin{lstlisting}
+  4 > oy x^2
+\end{lstlisting}
+is executed as follows:
+\begin{lstlisting}
+  for all j with 0<=j<nj:
+    for all i with 0<=i<ni[j]:
+      let y[k,j,i] := x[k,j,i]^2
+\end{lstlisting}
+
+In contrast, a command like \cmd{oz0} or \cmd{op2} or \cmd{oi} implies a loop over ''j'' only.
+
+\subsection{Curves}
+
+Introductory example
+
+\begin{lstlisting}
+ > fm 101 3 testdata                             # create test data set
+0 > =ox (i-50)/10                                 # x-scale now goes from -5 to 5 in steps of 0.1
+0 > =oy exp(-(x-j)^2/2/(1.4^j)^2)*ran(.8,1.2+0*i) # y(x) is now a noisy Gaussian
+0 > cc p0*exp(-(t-p1)^2/2/p2^2)                   # create fit curve
+1 > op0 1                                         # set initial value of fit parameter
+1 > op1 1                                         #   (in this case not really necessary,
+1 > op2 1                                         #   because by default the initial value is 1 anyway)
+1 > cf                                            # perform a fit
+1 > 0,1 p 1                                       # plot spectrum 1 (data and curve)
+0,1 > cp                                          # show fit parameters
+\end{lstlisting}
diff --git a/doc/ps/FixMdframed.tex b/doc/FixMdframed.tex
similarity index 100%
rename from doc/ps/FixMdframed.tex
rename to doc/FixMdframed.tex
diff --git a/doc/ps/GraphicPostprocessing.tex b/doc/GraphicPostprocessing.tex
similarity index 94%
rename from doc/ps/GraphicPostprocessing.tex
rename to doc/GraphicPostprocessing.tex
index 54c8304773b13c7f7b1b341a072f62c6ffad4182..752914acedb32aa89030e757b164785b24b5e39b 100644
--- a/doc/ps/GraphicPostprocessing.tex
+++ b/doc/GraphicPostprocessing.tex
@@ -3,27 +3,9 @@
 \def\iFM#1{\index{Frida!graphic file!#1 (PostScript macro)}\index{#1 (Frida PostScript macro)}}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Introduction}
+\section{Graphic files}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-Frida is a versatile data-analysis program.
-From a command-line interface, it offers various methods to
-visualize, manipulate and fit tabular data.
-Frida is especially designed for the analysis of spectral data,
-in particular from quasielastic neutron scattering (QENS).
-
-Frida is currently in maintenance mode, which means:
-bugs will be fixed speedily,
-new features will be implemented occasionally,
-but development at large is stalled until a decision is taken
-which QENS software shall be institutionally supported at MLZ and
-partner institutes.
-
-The following notes describe how to post-process PostScript graphics files
-generated by Frida, in order to obtain publication-grade figure.
-These notes have grown out of an oral tutorial.
-They will be gradually converted from slide-show format to written-manual style.
-
 In Frida, two different methods are used to visualize data.
 For screen display in interactive sessions,
 Frida spawns a Gnuplot session.
@@ -33,16 +15,12 @@ For saving graphics (command \T{gp}),
 Frida does \E{not} use Gnuplot's PostScript backend,
 but directly writes PostScript commands to a file.
 \index{PostScript!written by Frida}%
-In the following,
-the structure of this Frida-generated PostScript file is explained,
-and it is shown how to embellish a plot by a few edits to this file.
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Graphic formats, workflow}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+In this chapter,
+the structure of the Frida-generated PostScript file is explained,
+and it is shown how to manually edit such files to obtain publication-grade graphics.
 
 %==============================================================================
-\subsection{File formats}
+\subsection{Graphic file formats}
 %==============================================================================
 
 Graphics can be stored in many different file formats.
@@ -139,11 +117,11 @@ should be left in vector format throughout all postprocessing.
 %==============================================================================
 
 Within Frida, the commands \T{p} and \T{a}
-\iFC{p}
-\iFC{a}
+\iFC{p}%
+\iFC{a}%
 are used to plot data and curves.
 Commands starting with the letter \T{g}
-\iFC{g\ldots}
+\iFC{g\ldots}%
 allow to choose output windows, to set data ranges,
 and to modify other control parameters.
 Plot commands are sent from Frida to a Gnuplot process,
@@ -154,14 +132,14 @@ Instead,
 Frida holds a complete copy of the graphics state and of all plotted
 data in memory.
 When the command \T{gp} or \T{gf} is issued,
-\iFC{gp}
-\iFC{gf}
+\iFC{gp}%
+\iFC{gf}%
 these data are used to generate a PostScript file
 \index{PostScript!written by Frida}%
 that contains essentially the same plot as the active Gnuplot window.
 
 The command \T{gp} saves a complete graphics file
-\iFC{gp}
+\iFC{gp}%
 as \url{l<number>.ps} in the preset graphics output directory
 (by default \url{~/gnew/}).
 For \url{number}, the lowest unused integer is chosen.
@@ -169,7 +147,7 @@ The so obtained file can immediately be viewed, printed,
 and modified in a text editor.
 Alternatively,
 the command \T{gf} generates an incomplete graphic file \url{l<number>.psa}
-\iFC{gf}
+\iFC{gf}%
 that is lacking all macro definitions.
 Such a file is useful when when several Frida-generated plots shall be
 combined into one figure (\cref{Sconcat}).
@@ -329,13 +307,85 @@ or to multiple of the expected final size,
 before being rasterized.
 \index{Raster graphics!conversion from vector format}%
 
+%==============================================================================
+\subsection{File structure}
+%==============================================================================
+
+\index{PostScript!Frida-generated|see {Frida, graphic file}}%
+\index{Frida!graphic file!structure}%
+\index{Plot!PostScript file|see {Frida, graphic file}}%
+A Frida-generated PostScript file has three main parts:
+\begin{itemize}
+\item a dictionary with macro definitions,
+\item a setup section, and
+\item the actual plot.
+\end{itemize}
+The dictionary part is a verbatim copy of the file \url{wups11a.ps}
+\index{wups11a.ps}%
+\index{Frida!graphic file!dictionary part}%
+\index{Frida!graphic file!macro definitions|see {dictionary part}}%
+that is installed along with Frida;
+depending on the installation path,
+it typically resides in \url{/usr/share/frida} or \url{/usr/local/share/frida}.
+If the graphic file is generated by the command \T{gf} instead of \T{gp},
+\iFC{gf}%
+\iFC{gp}%
+then the dictionary part is omitted.
+The dictionary part mainly contains a huge set of macro definitions.
+Many of these macros are used in the page setup or/and in the Frida generated plot.
+Many other macros are not used by Frida but provided for users who may employ them
+in manual enhancements of Frida generated graphics.
+To give just two important examples that are further explained below:
+There are macros for typesetting strings that contain greek letters, symbols,
+subscripts or superscripts (\cref{SfpsStringOps});
+and there are macros for building a legend that explains the meaning of
+plotted symbols (\cref{SfpsTextPlacement}).
+
+The setup section contains commands to control
+\index{Frida!graphic file!setup part}%
+the size and aspect ratio of the plot frame,
+the position on the page,
+the background,
+the appearance of metadata,
+and the shape, size, and color of plot symbols.
+All this is described below in \cref{SfpsSettings}.
+The entire section is a verbatim copy of the file \url{g3.ps}
+\index{g3.ps}%
+that resides in the same \url{share} directory as \url{wups11a.ps}.
+These file names are soft coded in the configuration file \url{frida.ini}.
+\index{frida.ini}%
+\index{Frida!customization!frida.ini}%
+This allows users to replace \url{g3.ps} by a customized version of their own.
+
+Only the third part of a Frida-generated graphic file with the actual plot
+is not just copied,
+\index{Frida!graphic file!plot part}%
+but written line by line by Frida.
+It consists of three sections:
+an initial section that defines a plot frame with coordinate axes, ticks,
+numbers, and labels;
+a core section with the data points to be plotted;
+and a metadata section that explains where the data come from.
+All this is further elaborated in \cref{SfpsPlotFrame}.
+
+For orientation in a graphic file,
+there are a few marks.
+\index{Frida!graphic file!marks}%
+Open a graphic file with an editor or a text viewer,
+and search for the string \T{ewu}.
+\index{ewu (mark in Frida graphic file)}%
+It will occur exactly once,
+in a comment block near the end of the dictionary part.
+And similarly, the mark \T{ecu} should occur no more than once,
+\index{ecu (mark in Frida graphic file)}%
+in a comment block near the end of the setup section.
+
 %==============================================================================
 \subsection{PostScript}\label{SPostScript}
 %==============================================================================
 
 We now give a brief introduction to programming and plotting in PostScript,
-and thereby provides a foundation for the following \cref{SFridaPS} about
-editing Frida-generated PostScript code.
+and thereby provide a foundation for the editing of Frida-generated PostScript code.
 
 PostScript was created around 1981, and got into wide-spread use
 thanks to consistent support by Apple
@@ -499,7 +549,7 @@ To continue execution beyond the console message,
 use the command sequence \T{dup ==}.
 
 \begin{figure}[tp]
-\centering{\includegraphics[width=.8\textwidth]{ex3.ps}}
+\centering{\includegraphics[width=.8\textwidth]{fig/ps/ex3.ps}}
 \caption{PostScript plotting examples, drawn by the code from the end of \cref{SPostScript}.}
 \label{Fps}
 \end{figure}
@@ -579,102 +629,17 @@ and more.
 For all this, see the Red Book \cite{Ado99},
 or/and start by modifying sample code from Frida's macro collection.
 
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Postprocessing Frida graphics}\label{SFridaPS}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-In \cref{SWorkflow} we saw \E{how} to modify a PostScript file in an
-interactive edit session,
-using a text editor and an image viewer side-by-side.
-Let us now discuss \E{what} to modify in a Frida-generated PostScript graphic.
-We start with a structural overview before we turn to single PostScript commands
-that allow parameter changes or other modifications.
-
-%==============================================================================
-\subsection{File structure}
-%==============================================================================
-
-\index{PostScript!Frida-generated|see {Frida, graphic file}}%
-\index{Frida!graphic file!structure}%
-\index{Plot!PostScript file|see {Frida, graphic file}}%
-A Frida-generated PostScript file has three main parts:
-\begin{itemize}
-\item a dictionary with macro definitions,
-\item a setup section, and
-\item the actual plot.
-\end{itemize}
-The dictionary part is a verbatim copy of the file \url{wups11a.ps}
-\index{wups11a.ps}%
-\index{Frida!graphic file!dictionary part}%
-\index{Frida!graphic file!macro definitions|see {dictionary part}}%
-that is installed along with Frida;
-depending on the installation path,
-it typically resides in \url{/usr/share/frida} or \url{/usr/local/share/frida}.
-If the graphic file is generated by the command \T{gf} instead of \T{gp},
-\iFC{gf}%
-\iFC{gp}%
-then the dictionary part is omitted.
-The dictionary part mainly contains a huge set of macro definitions.
-Many of these macros are used in the page setup or/and in the Frida generated plot.
-Many other macros are not used by Frida but provided for users who may employ them
-in manual enhancements of Frida generated graphics.
-To give just two important examples that are further explained below:
-There are macros for typesetting strings that contain greek letters, symbols,
-subscripts or superscripts (\cref{SfpsStringOps});
-and there are macros for building a legend that explains the meaning of
-plotted symbols (\cref{SfpsTextPlacement}).
-
-The setup section contains commands to control
-\index{Frida!graphic file!setup part}%
-the size and aspect ratio of the plot frame,
-the position on the page,
-the background,
-the appearance of metadata,
-and the shape, size, and color of plot symbols.
-All this is described below in \cref{SfpsSettings}.
-The entire section is a verbatim copy of the file \url{g3.ps}
-\index{g3.ps}%
-that resides in the same \url{share} directory as \url{wups11a.ps}.
-These file names are soft coded in the configuration file \url{frida.ini}.
-\index{frida.ini}%
-\index{Frida!customization!frida.ini}%
-This allows users to replace \url{g3.ps} by a customized version of their own.
-
-Only the third part of a Frida-generated graphic file with the actual plot
-is not just copied,
-\index{Frida!graphic file!plot part}%
-but written line by line by Frida.
-It consists of three sections:
-an initial section that defines a plot frame with coordinate axes, ticks,
-numbers, and labels;
-a core section with the data points to be plotted;
-and a metadata section that explains where the data come from.
-All this is further elaborated in \cref{SfpsPlotFrame}.
-
-For orientation in a graphic file,
-there are a few marks.
-\index{Frida!graphic file!marks}%
-Open a graphic file with an editor or a text viewer,
-and search for the string \T{ewu}.
-\index{ewu (mark in Frida graphic file)}%
-It will occur exactly once,
-in a comment block near the end of the dictionary part.
-And similarly, the mark \T{ecu} should occur no more than once,
-\index{ecu (mark in Frida graphic file)}%
-in a comment block near the end of the setup section.
-
 %==============================================================================
 \subsection{Setup}\label{SfpsSettings}
 %==============================================================================
 
 \index{Frida!graphic file!setup part|(}%
 \begin{figure}[tp]
-\centering{\includegraphics[width=.8\textwidth]{nho1-1.ps}}
+\centering{\includegraphics[width=.8\textwidth]{fig/ps/nho1-1.ps}}
 \\[.8mm]
-\includegraphics[width=.4\textwidth]{nho1-1.ps}
+\includegraphics[width=.4\textwidth]{fig/ps/nho1-1.ps}
 \hfill
-\includegraphics[width=.4\textwidth]{nho1-2.ps}
+\includegraphics[width=.4\textwidth]{fig/ps/nho1-2.ps}
 \caption{One and the same figure plotted with three different magnifications
 or/and size settings.
 Top: a figure with global size 12 (\T{defsiz}) and reduction 1 (\T{defred}),
@@ -802,7 +767,7 @@ This affects only raw PostScript image,
 since it will be compensated as soon as a bounding box is set.
 
 \begin{figure}[tp]
-\centering{\includegraphics[width=.6\textwidth]{aCols.ps}}
+\centering{\includegraphics[width=.6\textwidth]{fig/ps/aCols.ps}}
 \caption{Predefined color sequences.
 \iFM{aCol1 etc.}%
 \index{Color!sequence, predefined by Frida macro}%
@@ -815,7 +780,7 @@ arbitrarily, except if the subscript \T{fix} indicates the contrary.}
 \end{figure}
 
 \begin{figure}[tp]
-\centering{\includegraphics[width=.9\textwidth]{pSet.ps}}
+\centering{\includegraphics[width=.9\textwidth]{fig/ps/pSet.ps}}
 \caption{Predefined symbols.
 \index{Plot symbol!Frida graphic}%
 \index{Symbol!Frida graphic}%
@@ -896,7 +861,7 @@ The command \T{ipCol} takes as argument a number between $0$ and $ni-1$,
 and sets a color from the previously selected sequence.
 
 \begin{figure}[tp]
-\centering{\includegraphics[width=.5\textwidth]{Dashes.ps}}
+\centering{\includegraphics[width=.5\textwidth]{fig/ps/Dashes.ps}}
 \caption{Dashed lines, for different arguments of \T{lset}.}
 \label{Fdashes}
 \index{Dash pattern!Frida graphic}%
@@ -1083,7 +1048,7 @@ takes the last string ``$/3$'', concatenates it with the contents of the special
 and thereby generates the output ``$x=2\pi/3$''.
 
 \begin{table}[pt]
-\includegraphics[width=1\textwidth]{symbols1.ps}
+\includegraphics[width=1\textwidth]{fig/ps/symbols1.ps}
 \caption{Upper row: latin characters from the ``Helvetica'' font.
 Lower row: corresponding greek characters from the ``Symbol'' font.}
 \label{Tgrec}
@@ -1095,7 +1060,7 @@ Lower row: corresponding greek characters from the ``Symbol'' font.}
 \end{table}
 
 \begin{table}[pt]
-\centerline{\includegraphics[width=.692\textwidth]{symbols2.ps}}
+\centerline{\includegraphics[width=.692\textwidth]{fig/ps/symbols2.ps}}
 \caption{These symbols occupy equal positions in ``Helvetica''
 (and other fonts with standard latin encoding)
 and in the ``Symbol'' font.}
@@ -1108,7 +1073,7 @@ and in the ``Symbol'' font.}
 \end{table}
 
 \begin{table}[pt]
-\centerline{\includegraphics[width=.231\textwidth]{symbols3.ps}}
+\centerline{\includegraphics[width=.231\textwidth]{fig/ps/symbols3.ps}}
 \caption{Keyboard symbols in ``Helvetica''
 that correspond to completely different symbols in the ``Symbol'' font.}
 \label{TdifferingChars}
@@ -1116,7 +1081,7 @@ that correspond to completely different symbols in the ``Symbol'' font.}
 \end{table}
 
 \begin{table}[pt]
-\centerline{\includegraphics[width=1.\textwidth]{symbols4.ps}}
+\centerline{\includegraphics[width=1.\textwidth]{fig/ps/symbols4.ps}}
 \caption{These symbols from the ``Symbol'' font are accessible through octal codes.}
 \label{ToctalSym}
 \index{Symbol!PostScript font}%
@@ -1124,7 +1089,7 @@ that correspond to completely different symbols in the ``Symbol'' font.}
 \end{table}
 
 \begin{table}[pt]
-\centerline{\includegraphics[width=1.\textwidth]{symbols6.ps}}
+\centerline{\includegraphics[width=1.\textwidth]{fig/ps/symbols6.ps}}
 \caption{These symbols and accentuated letters from ``Helvetica''
  (and other fonts with standard latin encoding)
  are accessible through octal codes.}
@@ -1235,7 +1200,7 @@ or
 %==============================================================================
 
 \begin{figure}[tp]
-\centering{\includegraphics[width=.2\textwidth]{Legend.ps}}
+\centering{\includegraphics[width=.2\textwidth]{fig/ps/Legend.ps}}
 \caption{A plot legend, created by the code shown in \cref{SfpsTextPlacement}.}
 \label{Flegend}
 \index{Legend!Frida graphic}%
diff --git a/doc/Introduction.tex b/doc/Introduction.tex
new file mode 100644
index 0000000000000000000000000000000000000000..64d09296625b890eb5570cb143da1fd44ce85475
--- /dev/null
+++ b/doc/Introduction.tex
@@ -0,0 +1,22 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Introduction}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Frida is a versatile data analysis program.
+From a command line interface,
+it offers numerous methods to
+visualize, manipulate and fit tabular data.
+Frida is especially designed for the analysis of spectral data,
+in particular from quasielastic neutron scattering (QENS).
+
+Frida is currently in maintenance mode, which means:
+bugs will be fixed speedily,
+new features will be implemented occasionally,
+but development at large is stalled until a decision is taken
+which QENS software shall be institutionally supported at MLZ and
+partner institutes.
+
+This User Manual is a fragment:
+A few topics are covered in depth, others are missing completely.
+For complementary information,
+see the online docs at \url{http://apps.jcns.fz-juelich.de/doku/frida/start}.
diff --git a/doc/ps/Setup.tex b/doc/Setup.tex
similarity index 99%
rename from doc/ps/Setup.tex
rename to doc/Setup.tex
index efcd9d15e9871e945b5f926e684ec96cc25d4aaa..d33af2235cffe6592a0b9bd69bbd74b9353f4d9a 100644
--- a/doc/ps/Setup.tex
+++ b/doc/Setup.tex
@@ -62,6 +62,9 @@
 \@ifpackagelater{unicode-math}{2014/07/01}{\olducmfalse}{\olducmtrue}
 \makeatother
 
+\def\E#1{\textit{#1}}
+\def\cmd#1{\texttt{#1}}
+
 %-------------------------------------------------------------------------------
 %  Sectioning
 %-------------------------------------------------------------------------------
diff --git a/doc/ps/Title.tex b/doc/Title.tex
similarity index 95%
rename from doc/ps/Title.tex
rename to doc/Title.tex
index fd746172c4687a104e0a639fe497eea608bf0066..39ab8b20890cac287c75bd93e2833b95c3cb4411 100644
--- a/doc/ps/Title.tex
+++ b/doc/Title.tex
@@ -11,7 +11,8 @@
 \Huge
 {\bf Frida}\\[10mm]
 \huge
-{\bf Graphics postprocessing}\\[10mm]
+{\bf User Manual}\\[10mm]
+{\bf (incomplete preview, work in progress)}\\[10mm]
 \large
 Frida version \FridaVersionNumber\\
 \today\\\vfill
diff --git a/doc/ps/FridaGraphicPostprocessing.tex b/doc/UserManual.tex
similarity index 87%
rename from doc/ps/FridaGraphicPostprocessing.tex
rename to doc/UserManual.tex
index 883bcd27577e0eff92c1f94783935ffb3b42932c..f47b6b2741222c9000aea9aa0692dc971d75a12c 100644
--- a/doc/ps/FridaGraphicPostprocessing.tex
+++ b/doc/UserManual.tex
@@ -11,7 +11,7 @@
 \def\E#1{\textsl{#1}}
 \def\T#1{\texttt{#1}}
 
-\def\FridaVersionNumber{2.3.3c}
+\def\FridaVersionNumber{2.3.5a}
 
 \begin{document}
 \flushbottom
@@ -21,8 +21,11 @@
 
 \tableofcontents %\cleardoublepage
 
-%\include{Introduction}
+\include{Introduction}
+\include{DataModel}
+\include{Expressions}
 \include{GraphicPostprocessing}
+\include{Changes}
 
 %\otherchapter{Bibliography}
 %\section*{Bibliography}
diff --git a/doc/ps/Dashes.ps b/doc/fig/ps/Dashes.ps
similarity index 100%
rename from doc/ps/Dashes.ps
rename to doc/fig/ps/Dashes.ps
diff --git a/doc/ps/Legend.ps b/doc/fig/ps/Legend.ps
similarity index 100%
rename from doc/ps/Legend.ps
rename to doc/fig/ps/Legend.ps
diff --git a/doc/ps/aCols.ps b/doc/fig/ps/aCols.ps
similarity index 100%
rename from doc/ps/aCols.ps
rename to doc/fig/ps/aCols.ps
diff --git a/doc/ps/ex3.ps b/doc/fig/ps/ex3.ps
similarity index 100%
rename from doc/ps/ex3.ps
rename to doc/fig/ps/ex3.ps
diff --git a/doc/ps/nho1-1.ps b/doc/fig/ps/nho1-1.ps
similarity index 100%
rename from doc/ps/nho1-1.ps
rename to doc/fig/ps/nho1-1.ps
diff --git a/doc/ps/nho1-2.ps b/doc/fig/ps/nho1-2.ps
similarity index 100%
rename from doc/ps/nho1-2.ps
rename to doc/fig/ps/nho1-2.ps
diff --git a/doc/ps/pSet.ps b/doc/fig/ps/pSet.ps
similarity index 100%
rename from doc/ps/pSet.ps
rename to doc/fig/ps/pSet.ps
diff --git a/doc/ps/symbols1.ps b/doc/fig/ps/symbols1.ps
similarity index 100%
rename from doc/ps/symbols1.ps
rename to doc/fig/ps/symbols1.ps
diff --git a/doc/ps/symbols2.ps b/doc/fig/ps/symbols2.ps
similarity index 100%
rename from doc/ps/symbols2.ps
rename to doc/fig/ps/symbols2.ps
diff --git a/doc/ps/symbols3.ps b/doc/fig/ps/symbols3.ps
similarity index 100%
rename from doc/ps/symbols3.ps
rename to doc/fig/ps/symbols3.ps
diff --git a/doc/ps/symbols4.ps b/doc/fig/ps/symbols4.ps
similarity index 100%
rename from doc/ps/symbols4.ps
rename to doc/fig/ps/symbols4.ps
diff --git a/doc/ps/symbols6.ps b/doc/fig/ps/symbols6.ps
similarity index 100%
rename from doc/ps/symbols6.ps
rename to doc/fig/ps/symbols6.ps
diff --git a/doc/ps/FridaGraphicPostprocessing.pdf b/doc/ps/FridaGraphicPostprocessing.pdf
deleted file mode 100644
index 8c8ddb65326064c43baea1a390bddab2e7c004c2..0000000000000000000000000000000000000000
Binary files a/doc/ps/FridaGraphicPostprocessing.pdf and /dev/null differ