]> Creatis software - bbtk.git/commitdiff
partial revision
authormaciej orkisz <maciej.orkisz@creatis.insa-lyon.fr>
Thu, 23 Jul 2009 16:36:45 +0000 (16:36 +0000)
committermaciej orkisz <maciej.orkisz@creatis.insa-lyon.fr>
Thu, 23 Jul 2009 16:36:45 +0000 (16:36 +0000)
kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex

index 4b4e20da2bfde7655113970d7200360d7453740f..cc30dbd4e96cd61fc806af8cdf76c78002fc8461 100644 (file)
@@ -1,4 +1,5 @@
 
+
 % ==========================================
 \documentclass[11pt,final,a4paper]{article}
 \input{config.tex}
@@ -19,27 +20,33 @@ create new \bbtk packages and black boxes.
 How to use them is described in \bbtk Users' guide. 
 
 Any black box must be included in a \bbtk package, 
-that is in a particular shared library which can be loaded 
-dynamically by \bbtk, either in \CPP code or in \bbs scripts 
+that is in a particular shared library that can be loaded 
+dynamically by \bbtkns, either in \CPP code or in \bbs scripts 
 with the commands \texttt{include} or \texttt{load}.
-The steps to create new boxes are thus to :
+The steps to create new boxes are thus:
 
 \begin{enumerate}
-\item \textbf{Create a new package. }
-This is described in section \ref{CreatePackage}.
-
-\item \textbf{Describe your new box.}
-You can do it either :
-\begin{itemize}
-\item In \CPP code. You will have to write the class for 
-your box, mostly using \bbtk macros.  
-\item In \xml code. 
-When configuring your project with \cmake, 
-the utility \bbfy will then generate the corresponding \CPP code. 
-\end{itemize}
-
-This is described in section \ref{CreateBlackBox}.
-
+       \item \textbf{Create a new package. }
+       This process (see section \ref{CreatePackage}), consists of two steps:
+       \begin{enumerate}
+               \item Generation of the project structure by use of \bbCreatePackage utility that creates both the
+                directories tree (for sources, documentation, etc.) and configuration files (particularly \texttt{CMakelists}). See section
+                \ref{sec:bbCreatePackage-files}.
+               \item Customization of the \texttt{CMakelists}. See section \ref{RootCMakeLists}.
+       \end{enumerate}
+       \item \textbf{Describe your new box.} This is explained in section \ref{CreateBlackBox}.
+       You can do it either:
+       \begin{itemize}
+               \item In \xml code. You will mainly have to customize an \xml skeleton automatically generated by \bbCreateBlackBox utility.
+               See section \ref{sec:XML-box}.
+               When configuring your project with \cmakens, 
+               the utility \bbfy will then automatically generate the corresponding \CPP code. 
+               \item In \CPP code. You will have to write the class for 
+               your box, mostly using \bbtk macros. See section \ref{sec:CPP-box}. 
+       \end{itemize}
+       \item \textbf{Configure your project with \cmakens.} See section \ref{sec:CMake}.
+       \item \textbf{Compile your project.} See section \ref{sec:compile}.
+       \item \textbf{Plug the new package} if you use  \bbStudio See section \ref{sec:plugin}.
 \end{enumerate}
 
 % ==========================================
@@ -49,43 +56,40 @@ This is described in section \ref{CreateBlackBox}.
 
 % ==========================================
 \subsection{Creating the file tree}
+\label{sec:bbCreatePackage-files}
 % ==========================================
 Before defining any black box you  
 have to create a package, or more precisely  
-the source files which will allow you to generate the package 
-(compile and link the shared library) and may be install it. 
-
-The \bbtk command line application \bbCreatePackage 
+the source files that will allow you to generate the package 
+(compile and link the shared library) and maybe install it. 
+The \bbtk command-line application \bbCreatePackage 
 allows to create the basic file architecture 
 to start the development of a new black box package.
-Type \bbCreatePackage in a console to get its usage :
+Type \bbCreatePackage in a console to get its usage:
 \begin{verbatim}
 bbCreatePackage <package-path> <package-name> [author] [description]
 \end{verbatim}
 
-\bbStudio also offers a graphical interface to the \bbCreatePackage 
-application. 
-You can run it with the menu \texttt{Tools $>$ Create Package}. 
-
-In both cases (using the command line tool or \bbStudio interface), 
-you have to choose : 
+In \bbStudio you can run this application via a graphical interface, by use of the menu \texttt{Tools $>$ Create Package}. 
+In both cases (using the command-line tool or \bbStudio interface), 
+you have to choose: 
 
 \begin{itemize}
 \item The {\bf directory} of your new package. 
-Two cases occur :
+Two cases occur:
 \begin{itemize}
 \item The black boxes you want to create are based on 
-a processing code (\CPP classes or \C functions) which 
+a processing code (\CPP classes or \C functions), which 
 is in an existing project handled by \cmake
 and you want the new package to be part of your existing project. 
-You will have to create your new package into the source tree of your 
+You will have to create your new package within the source tree of your 
 project and add a \texttt{SUBDIRS} command in the \texttt{CMakeLists.txt} 
 file of the parent directory of your package.
 \item You do not have an already existing project (you want 
 to create the new boxes from scratch) or you want/are imposed  
 that the existing project remain external to the package project.
 You will have to create your new package in a new location and 
-may be include/link against existing libraries. 
+maybe include/link against existing libraries. 
 \end{itemize}
 
 \item The {\bf name} of your new package. 
@@ -125,84 +129,83 @@ you should get a file structure like this (Linux users can verify it with the \t
         `-- CMakeLists.txt
 \end{verbatim}
 
-You can then :
+You can then:
 \begin{itemize}
-\item Edit the root CMakeLists.txt file to customize your package build settings (see \ref{RootCMakeLists} below)
+\item Edit the root \texttt{CMakeLists.txt} file to customize your package build settings (see section \ref{RootCMakeLists})
 
-\item Put your c++/xml boxes sources in 'src'.
+\item Put your \CPP/\xml boxes sources in '\texttt{src}' subdirectory (see section \ref{CreateBlackBox}).
  
-  Please use the convention : If the name of your package is Pack and the name of your box is Box then name the source files bbPackBox.\{h;cxx;xml\}.
+  Please use the convention: If the name of your package is \texttt{Pack} and the name of your box is \texttt{Box} then name the source files \texttt{bbPackBox.\{h;cxx;xml\}}. Note that this is automatically done when using the \bbCreateBlackBox utility.
+
+\item Put your script-defined boxes (complex boxes) in '\texttt{bbs/boxes}' subdirectory. 
 
-\item Put your script-defined boxes (complex boxes) in 'bbs/boxes'. 
+  Please use the convention: If the name of your box is '\texttt{Box}' then call the file '\texttt{bbBox.bbs}' to let others know that the script defines a complex black box type.
 
-  Please use the convention : If the name of your box is 'Box' then call the file 'bbBox.bbs' to let others know that the script defines a complex black box type.
+\item Put your script-defined applications in '\texttt{bbs/appli}' subdirectory. 
 
-\item Put your script-defined applications in 'bbs/appli'. 
+  Please use the convention: Do {\bf not} prefix '\texttt{bb}' to the files.
 
-  Please use the convention : Do not prepend 'bb' to the files.
+\item Put your data in '\texttt{data}' subdirectory. 
+Any data put there will be installed and accessible in your scripts. The box 
+\texttt{std::PrependPackageDataPath} provides the package data path.
 
-\item Put your data in 'data'. 
-Any data put there will be installed and accessible in your scripts : 
-the package data path is provided by the box 
-\texttt{std::PrependPackageDataPath}.
 
-\item You can customize the header of your package html doc by editing the file 'doc/bbdoc/header.html.in'. You must put html code in this file (or edit it with an html editor). You can include images or links to other html pages. The images and pages must be put in the folder 'doc/bbdoc' and will be properly installed. The same way, you can link to these images or pages in your boxes descriptions without giving any path. If you create subdirs for your material then you have to install the materials yourself by editing the CMakeLists.txt and links must use paths relative to 'doc/bbdoc'.
+\item Customize the header of your package \texttt{html} doc. To do so, you have to edit the file '\texttt{doc/bbdoc/header.html.in}' either with an \texttt{html} editor or by use of a text editor (directly editing the \texttt{html} code). You can include images or links to other \texttt{html} pages. The images and pages must be put in the folder '\texttt{doc/bbdoc}' and will be properly installed. The same way, you can link to these images or pages in your boxes descriptions without giving any path. If you create subdirs for your material then you have to install the materials yourself by editing the \texttt{CMakeLists.txt} and links must use paths relative to '\texttt{doc/bbdoc}'.
 
-\item You can customize the main page of your doxygen doc by editing the file 'doc/doxygen/DoxyMainPage.txt.in'.
+\item Customize the main page of your \texttt{doxygen} doc. To do so, you have to edit the file '\texttt{doc/doxygen/DoxyMainPage.txt.in}'.
 \end{itemize}
 
 \subsection{Configuring the root \texttt{CMakeLists.txt}}
 \label{RootCMakeLists}
 
-First you must configure your new package build settings, by editing the file 
-\texttt{CMakeLists.txt} in the package root directory.
-This file contains :
+\texttt{CMake} is a family of tools designed to build, test and package software (\url{http://www.cmake.org/}). It is used to control the software compilation process using platform- and compiler-independent configuration files. \texttt{CMake} generates native makefiles and workspaces that can be used in the compiler environment of your choice. To do this, each branch of your project directory tree contains an appropriate \texttt{CMakeLists.txt} file. These files have been filled-up, so as to minimize your effort. Normally, you only have to edit the file \texttt{CMakeLists.txt} in the package root directory, in order to configure your new package build settings.
+The listing of this file is given below. Hopefully, the comments in the file are easy to understand!
 
 \begin{file}{CMakeLists.txt}
 \small
 \begin{verbatim}
-#===========================================================================
+#==========================================================================
 # CMAKE SETTINGS FOR BUILDING A BBTK PACKAGE
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # THE NAME OF THE BBTK PACKAGE
 SET(BBTK_PACKAGE_NAME MyPackage)
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # IF IT IS A STANDALONE PROJECT UNCOMMENT NEXT LINE TO DECLARE YOUR PROJECT
 # PROJECT(bb${BBTK_PACKAGE_NAME})
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # PACKAGE AUTHOR
 # !!! NO COMMA ALLOWED !!!
 SET(${BBTK_PACKAGE_NAME}_AUTHOR "myself")
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # PACKAGE DESCRIPTION
-SET(${BBTK_PACKAGE_NAME}_DESCRIPTION "The kinkiest stuff you ve ever seen.")
-#===========================================================================
+SET(${BBTK_PACKAGE_NAME}_DESCRIPTION "My super package does nothing yet")
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # PACKAGE VERSION NUMBER 
 SET(${BBTK_PACKAGE_NAME}_MAJOR_VERSION 1)
 SET(${BBTK_PACKAGE_NAME}_MINOR_VERSION 0)
 SET(${BBTK_PACKAGE_NAME}_BUILD_VERSION 0)
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # UNCOMMENT EACH LIBRARY NEEDED (WILL BE FOUND AND USED AUTOMATICALLY)
 # SET(${BBTK_PACKAGE_NAME}_USE_VTK  ON)
 # SET(${BBTK_PACKAGE_NAME}_USE_ITK  ON)
 # SET(${BBTK_PACKAGE_NAME}_USE_GDCM ON)
 # SET(${BBTK_PACKAGE_NAME}_USE_GSMIS ON)
 # SET(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS ON)
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # LIST HERE THE OTHER bbtk PACKAGES NEEDED
 # (WILL BE FOUND AND USED AUTOMATICALLY)
 SET(${BBTK_PACKAGE_NAME}_USE_PACKAGES 
@@ -212,9 +215,9 @@ SET(${BBTK_PACKAGE_NAME}_USE_PACKAGES
   # vtk
   # ...
   )
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # THE SOURCES OF THE PACKAGE
 # EITHER UNCOMMENT NEXT LINE TO COMPILE ALL .cxx OF THE src DIRECTORY :
 SET(${BBTK_PACKAGE_NAME}_COMPILE_ALL_CXX ON)
@@ -224,9 +227,9 @@ SET(${BBTK_PACKAGE_NAME}_COMPILE_ALL_CXX ON)
 # E.G. TO COMPILE "toto.cxx" ADD "toto" (NO EXTENSION)
 # THE PATH MUST BE RELATIVE TO THE src FOLDER
 #    )
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # THE xml SOURCES OF THE PACKAGE
 # EITHER UNCOMMENT NEXT LINE TO bbfy ALL .xml OF THE src DIRECTORY :
 SET(${BBTK_PACKAGE_NAME}_COMPILE_ALL_XML ON)
@@ -236,11 +239,11 @@ SET(${BBTK_PACKAGE_NAME}_COMPILE_ALL_XML ON)
 # E.G. TO bbfy "toto.xml" ADD "toto" (NO EXTENSION)
 # THE PATH MUST BE RELATIVE TO THE src FOLDER
 #    )
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # THE SCRIPT-DEFINED BOXES OF THE PACKAGE (bbs)
-# EITHER UNCOMMENT NEXT LINE TO INCLUDE ALL .bbs OF THE bbs/boxes DIRECTORY :
+# EITHER UNCOMMENT NEXT LINE TO INCLUDE ALL .bbs OF THE bbs/boxes DIRECTORY:
 SET(${BBTK_PACKAGE_NAME}_INCLUDE_ALL_BBS_BOXES ON)
 # ... OR LIST THE FILES TO INCLUDE MANUALLY :
 # SET(${BBTK_PACKAGE_NAME}_BBS_BOXES
@@ -248,11 +251,11 @@ SET(${BBTK_PACKAGE_NAME}_INCLUDE_ALL_BBS_BOXES ON)
 # E.G. TO INCLUDE "boxes/bbtoto.bbs" ADD "boxes/bbtoto" (NO EXTENSION)
 # !! THE PATH MUST BE RELATIVE TO THE bbs FOLDER !!
 #)
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # THE SCRIPT-DEFINED APPLICATIONS OF THE PACKAGE (bbs)
-# EITHER UNCOMMENT NEXT LINE TO INCLUDE ALL .bbs OF THE bbs/appli DIRECTORY :
+# EITHER UNCOMMENT NEXT LINE TO INCLUDE ALL .bbs OF THE bbs/appli DIRECTORY:
 SET(${BBTK_PACKAGE_NAME}_INCLUDE_ALL_BBS_APPLI ON)
 # ... OR LIST THE FILES TO INCLUDE MANUALLY :
 # SET(${BBTK_PACKAGE_NAME}_BBS_APPLI
@@ -260,105 +263,103 @@ SET(${BBTK_PACKAGE_NAME}_INCLUDE_ALL_BBS_APPLI ON)
 # E.G. TO INCLUDE "appli/testToto.bbs" ADD "appli/testToto" (NO EXTENSION)
 # !! THE PATH MUST BE RELATIVE TO THE bbs FOLDER !!
 #)
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 SET(${BBTK_PACKAGE_NAME}_INCLUDE_DIRS
   # LIST HERE YOUR ADDITIONAL INCLUDE DIRECTORIES 
   # EXCEPT :
   #  - src
   #  - bbtk dirs
-  #  - automatically handled libraries or packages : wx, vtk... (see above)
+  #  - automatically handled libraries or packages: wx, vtk... (see above)
   #  - the dirs automatically set by other libraries found by FIND_PACKAGE
   )
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 SET(${BBTK_PACKAGE_NAME}_LIBS 
   # LIST HERE THE ADDITIONAL LIBS TO LINK AGAINST
   # EXCEPT : the same libs than for INCLUDE_DIRS 
   )
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # IF NEEDED : UNCOMMENT NEXT LINE 
 # AND LIST ADDITIONNAL DIRECTORIES 
 # IN WHICH TO LOOK FOR LIBRARIES TO LINK AGAINST
 # LINK_DIRECTORIES()
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # SET TO TRUE TO HAVE INFORMATION ON LIBRARIES FOUND DURING CMAKE CONFIGURE
 SET(FIND_PACKAGE_VERBOSE TRUE)
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # END OF USER SECTION
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # Include configuration script
 INCLUDE(Configure.cmake)
-#===========================================================================
+#==========================================================================
 
-#===========================================================================
+#==========================================================================
 # EOF
-#===========================================================================
+#==========================================================================
 
 \end{verbatim}
 \end{file}
 
-The comments in the file should be easily understandable !
-In this file, 
-you can see some of the informations you supplied in previous step:
+You can see in the file some of the informations you supplied  when running the  \bbCreatePackage utility:
 \begin{itemize}
-  \item The \textbf{name} of your package. This will be the name used to load it in \bbi. The shared library however will be called \texttt{bb}name hence on 
+  \item The \textbf{name} of your package. This will be the name used to load it in \bbins. The shared library however will be called \texttt{bb}name hence on 
     \lin the object file will be called \texttt{libbb}name\texttt{.so} 
     and on \win it  will be called \texttt{bb}name\texttt{.dll}.
-  \item The \textbf{author(s)} of the package. Preferably provide e-mail adresses.
-  \item A \textbf{description} of the package, which will appear in the help of your package or in its html documentation automatically generated by \bbtk.  
+  \item The \textbf{author(s)} of the package. Preferably provide e-mail addresses.
+  \item A \textbf{description} of the package, which will appear in the help of your package or in its html documentation automatically generated by \bbtkns.  
 \end{itemize}
 
-You can additionaly set :
+You can additionally set:
 \begin{itemize}
 \item The \textbf{version} of the package.
 
-\item The \textbf{libraries used} by the package : \vtk, \itk, \gdcm, \gsmis, \wx. The mecanisms to find these libraries, their sources and to link against them are automatically handled by the \cmake files installed by \bbCreatePackage. You just have to uncomment a line to use one of these libraries.
-\item The \textbf{core \bbtk packages used} by the package as \CPP libraries
+\item The \textbf{libraries} that will be used by the package. The mechanisms to find these libraries, their sources and to link against them are automatically handled by the \cmake files installed by \bbCreatePackagens. You just have to uncomment a line to use one of these libraries: \vtkns, \itkns, \gdcmns, \gsmisns, \wxns.
+\item The \textbf{core \bbtk packages} that will be used by the package as \CPP libraries
 (if you need to use the black boxes of these packages in your \CPP code, 
 i.e. include some header and link with the library). 
-The mecanisms to find these libraries, 
+The mechanisms to find these libraries, 
 their sources and to link against them are automatically handled 
-by the \cmake files installed by \bbCreatePackage. 
+by the \cmake files installed by \bbCreatePackagens
 You just have to uncomment a line to use one of these libraries.
 
-\item The \textbf{\CPP sources} of the package : you can list each input \CPP 
+\item The \textbf{\CPP sources} of the package: you can list each input \CPP 
 file explicitly or tell \cmake to include in the project all the \CPP files 
-of the 'src' directory (default).
+of the 'src' directory (default). To do this, you have to comment/uncomment appropriate lines in the file. Be careful with lines containing the opening and closing parentheses.
 
-\item The \textbf{\xml sources} of the package : you can list each input \xml
+\item The \textbf{\xml sources} of the package: you can list each input \xml
 file explicitly or tell \cmake to include in the project all the \xml files 
-of the 'src' directory (default).
+of the 'src' directory (default). Here you also have to be careful when commenting/uncommenting lines with opening and closing parentheses.
 
-\item The \textbf{boxes \bbs sources} of the package : you can list each 
+\item The \textbf{boxes \bbs sources} of the package: you can list each 
 input \bbs
 file explicitly or tell \cmake to include in the project \emph{all} 
-the \bbs files of the 'bbs/boxes' directory (default, recommanded). 
+the \bbs files of the 'bbs/boxes' directory (default, recommended). Here you also have to be careful when commenting/uncommenting lines with opening and closing parentheses.
 
-\item The \textbf{appli \bbs sources} of the package 
+\item The \textbf{appli \bbs sources} of the package: 
 you can list each input \bbs
 file explicitly or tell \cmake to include in the project \emph{all} 
-the \bbs files of the 'bbs/appli' directory (default, recommanded). 
+the \bbs files of the 'bbs/appli' directory (default, recommended). Here you also have to be careful when commenting/uncommenting lines with opening and closing parentheses.
 
-\item \textbf{Additional include directories}. Set it if your package needs to include source files which are not in the package directory, typically if it depends on another library which is not one the libraries automatically handled (\vtk, \itk...) and which you did not find with the 
-\texttt{FIND\_PACKAGE} mechanism of \cmake.
+\item \textbf{Additional include directories}. Set it if your package needs to include source files that are not in the package directory, typically if it depends on another library that is not one of the libraries automatically handled (\vtkns, \itkns...) and that you did not find with the 
+\texttt{FIND\_PACKAGE} mechanism of \cmakens.
 
-\item \textbf{Additional libraries} to link against. Set it if your package needs to link against another library which is not one the libraries automatically handled (\vtk, \itk...) and which you did not find with the 
-\texttt{FIND\_PACKAGE} mechanism of \cmake.
+\item \textbf{Additional libraries} to link against. Set it if your package needs to link against another library that is not one of the libraries automatically handled (\vtkns, \itkns...) and that you did not find with the 
+\texttt{FIND\_PACKAGE} mechanism of \cmakens.
 
 \item \textbf{Additional link directories} in which to find libraries not 
-automatically handled and which you did not find with the 
-\texttt{FIND\_PACKAGE} mechanism of \cmake. 
+automatically handled and that you did not find with the 
+\texttt{FIND\_PACKAGE} mechanism of \cmakens
 
 \end{itemize}
 
@@ -375,79 +376,80 @@ in the file.
 % ==========================================
 
 % ==========================================
-\subsubsection{\texttt{C++} or \texttt{XML} ?}
+\subsubsection{\texttt{C++} or \texttt{XML}?}
 % ==========================================
-There are two ways to create a new black box in an existing package :
+There are two ways to create a new black box in an existing package:
 \begin{itemize}
-\item Write an \xml description file which will be automatically 
-translated in \CPP by the \bbfy application during build (recommanded).
+\item Write an \xml description file that will be automatically 
+translated into \CPP by the \bbfy application during build (recommended).
 \item Write the \CPP code of the box using \bbtk macros.
 \end{itemize}
 
 % ==========================================
-\subsubsection{From which \bbtk class inherit ?}
+\subsubsection{From which \bbtk class inherit?}
 % ==========================================
 
-Apart from the choice of the description langage to use
-there is an important choice to do concerning the implementation of the box. 
-In \CPP, a black box is nothing but a class which has the standard 
-interface of all black boxes : what's its name ? inputs ? outputs ? and so on. 
+Apart from the choice of the description language to be used
+there is an important choice to make concerning the implementation of the box. 
+In \CPPns, a black box is nothing but a class that has the standard 
+interface of all black boxes, giving access to its name, inputs, outputs, and so on. 
 
 The abstract description of this interface is done in the class 
 \texttt{bbtk::BlackBox} of the \bbtk library 
-and is implemented in its children classes 
+and is implemented in its children classes: 
 \texttt{bbtk::AtomicBlackBox} and \texttt{bbtk::WxBlackBox} 
 \footnote{all the classes of the \bbtk library are in a \emph{namespace} 
 called \texttt{bbtk} 
 and the \CPP header of a class called \texttt{NameOfAClass} is 
 in the file called \texttt{bbtkNameOfAClass.h}}.
 
-To create a new black box, you have to inherit one of these two  
-concrete classes in order to inherit the black box interface and a 
+To create a new black box, you have to inherit from one of these two  
+actual classes in order to inherit the black box interface and a 
 particular implementation of this interface. 
 
 If your black box is a \emph{Widget} black box, 
-that is a black box which has (or is) 
+that is a black box that has (or is) 
 a piece of a graphical interface based on the \wx library,
-then it must inherit the class \texttt{bbtk::WxBlackBox}. 
+then it must inherit from the class \texttt{bbtk::WxBlackBox}. 
 
-Concretely, a \texttt{bbtk::WxBlackBox} is associated 
+Concretely, a \texttt{bbtk::WxBlackBox} is associated to 
 a \texttt{wxWindow} and must be able to return a pointer to it. 
 If your black box is not a widget black box 
-(that is : doesn't returns a pointer to a \texttt{wxWindow}),
+(that is: does not return a pointer to a \texttt{wxWindow}),
  it must inherit from \texttt{bbtk::AtomicBlackBox}.
-NOTE : \emph{modal dialogs} 
-which are created and destroyed at the end of the process 
-method of the box are NOT \texttt{WxBlackBoxes} : 
+NOTE: \emph{modal dialogs} 
+that are created and destroyed at the end of the process 
+method of the box are NOT \texttt{WxBlackBoxes}: 
 they do not return a \texttt{wxWindow}, 
 see the code of \texttt{wx::FileSelector} for example.
 
 % ==========================================
-\subsubsection{Inherit or encapsulate ?}
+\subsubsection{Inherit or encapsulate?}
 % ==========================================
 
-Now, your black box will do something (hopefully !). 
+Now, your black box will do something (hopefully!). 
 When you decide to write a new black box, 
 you should be in one of these three cases :
 \begin{enumerate}
-\item You already have a \texttt{C}-like function which 
-does the processing that you wish to 'blackboxify' (bbfy in short).
-\item You already have a \CPP class which 
-does the processing that you wish to 'blackboxify'
+\item You already have a \texttt{C}-like function that 
+does the processing and that you wish to 'blackboxify' ('bbfy' in short).
+\item You already have a \CPP class that 
+does the processing and that you wish to 'bbfy'
 \item You start from scratch without any existing code
 \end{enumerate}
 
 The idea of \BBTK is to embed processing codes into 
-\CPP objects which have a standard and generic interface - 
+\CPP objects that have a standard and generic interface - 
 namely black boxes - to be able to chain arbitrary 
 processes afterwards. 
 
-In \CPP, in order to embed an existing processing \emph{class}  
-into a standard interface you only have two possibilities :
+In \CPPns, in order to embed an existing processing \emph{class}  
+into a standard interface you only have two possibilities:
 \begin{enumerate}
-\item {\bf Inherit} the existing processing class 
-\emph{and} the interface class (e.g. \texttt{bbtk::AtomicBlackBox}).
-In this case you have to :
+\item {\bf Inherit} from the interface class (e.g. \texttt{bbtk::AtomicBlackBox})
+\emph{and} from the existing processing class.
+In this case you have to:
 \begin{enumerate}
 \item make the link between the inputs and outputs of the black box 
 and the interface of the inherited class
@@ -457,7 +459,7 @@ method of the inherited class in the processing method of the black box.
 \item {\bf Encapsulate} the existing processing class 
 in a class inherited from 
 the interface class (e.g. \texttt{bbtk::AtomicBlackBox}).
-In this case you have to :
+In this case you have to:
 \begin{enumerate}
 \item declare an instance of the processing class 
 as a member of the black box, 
@@ -473,16 +475,16 @@ class.
 \end{enumerate}
 \end{enumerate}
 
-If you wish to 'blackboxify' a C-like \emph{function}, 
+If you wish to 'bbfy' a C-like \emph{function}, 
 you do not have the choice, you can only use the second mechanism, 
 namely encapsulation.
 
-Obviously, the inheritance mechanism is more powerfull 
-and - when it is possible to use it - it demands less effort 
-because, as we will see, in \bbtk you can directly 
+Obviously, the inheritance mechanism is more powerful 
+and - when it is possible to use it - it demands less effort. 
+Indeed, as we will see, in \bbtk you can directly 
 link the accessors to the input and output data of the box 
 to the accessors of the inherited processing class, 
-as well as the procesing method of the black box 
+as well as the processing method of the black box 
 to the processing method of the inherited processing class, 
 very much like a callback mechanism.
 %\itk and \vtk classes 
@@ -506,7 +508,7 @@ or an output of a black box then
 two \emph{accessors} for this input or output are generated : 
 one to \emph{get} the value of the input or output and 
 one to \emph{set} it. 
-These accessors have normalized names 
+These accessors have normalized names: 
 
 \begin{itemize} 
 \item The declaration of an {\bf input} called \texttt{NAME} and 
@@ -536,13 +538,12 @@ Note that:
 \begin{itemize}
 \item All \bbtk methods are prefixed by \texttt{bb} 
 to avoid conflicts with potential inherited methods. 
-\item An input and an output can have the same name (e.g. 'Image').
-No conflict between accessors occur (e.g. 
-four distinct accessors are created : 
+\item An input and an output can have the same name (e.g. 'Image') and no conflict between accessors occurs, since
+four distinct accessors are created, as follows: 
 \texttt{bbSetInputImage}, 
 \texttt{bbGetInputImage}, 
-\texttt{bbSetOutputImage} and 
-\texttt{bbGetOutputImage}).
+\texttt{bbSetOutputImage}, 
+\texttt{bbGetOutputImage}.
 \end{itemize}
 
 
@@ -553,9 +554,10 @@ four distinct accessors are created :
 The command line application \bbCreateBlackBox 
 allows to create a skeleton \CPP or \xml files for a new black box. 
 It has a rather complex usage, 
-we recommand you use the graphical interface to it 
+we recommend you use the graphical interface to it 
 which is accessible with \bbStudio menu \texttt{Tools $>$ Create black box}.
-The interface looks like in fig. \ref{bbCreateBlackBox}.
+You will first be prompted to choose the location for the new black box, which should be the \texttt{src} directory of your package sources tree.
+Then the actual interface will appear, which looks like in fig. \ref{bbCreateBlackBox}.
 
 \begin{figure}[!ht]
 \caption{\label{bbCreateBlackBox}Create Black Box interface}
@@ -564,19 +566,19 @@ The interface looks like in fig. \ref{bbCreateBlackBox}.
 \end{center}
 \end{figure}
 
-You will have to give :
+You will have to give:
 \begin{enumerate}
-  \item The {\bf name} of the box
-  \item The {\bf package} to which the box belongs (can we do it automatically ? LG : think about it) 
-  \item The {\bf author}(s) of the box
-  \item A {\bf description} of the box
+  \item The {\bf name} of the box.
+  \item The {\bf package} to which the box belongs. Caution! You may not make a mistake, otherwise you will be unable to carry out the final build of your project.
+  \item The {\bf author}(s) of the box.
+  \item A {\bf description} of the box.
 
- \item Its {\bf type}, either 
+ \item Its {\bf type}, which is one of the following: 
    \begin{enumerate} 
-     \item  Basic (inherits \texttt{AtomicBlackBox}, no particular Input/Output)
-     \item  Widget (inherits \texttt{WxBlackBox}, has output 'Widget' of type 'wxWindow*')
-     \item VTK PolyDataAlgorithm (inherits \texttt{AtomicBlackBox} and a vtkPolyDataAlgorithm, has standard vtk I/O)
-     \item VTK ImageAlgorithm (inherits \texttt{AtomicBlackBox} and a vtkImageAlgorithm, has standard vtk I/O)
+     \item  \emph{Basic}, has no particular Input/Output, inherits from \texttt{AtomicBlackBox};
+     \item  \emph{Widget}, has an output \texttt{Widget}, type \texttt{wxWindow*}, inherits from \texttt{WxBlackBox};
+     \item \emph{VTK PolyDataAlgorithm}, has standard vtk Inputs/Outputs, inherits from \texttt{AtomicBlackBox} and from \texttt{vtkPolyDataAlgorithm};
+     \item \emph{VTK ImageAlgorithm}, has standard vtk Inputs/Outputs, inherits from \texttt{AtomicBlackBox} and from \texttt{vtkImageAlgorithm}.
 
    \end{enumerate}
    
@@ -585,6 +587,7 @@ You will have to give :
 
 % ==========================================
 \subsection{\texttt{XML} description of a box}
+\label{sec:XML-box}
 % ==========================================
 
 % ==========================================
@@ -592,7 +595,7 @@ You will have to give :
 % ==========================================
 
 Let us examine the \texttt{xml} file 
-describing the \texttt{Add} box of the \texttt{std} package :
+describing the \texttt{Add} box of the \texttt{std} package:
 
 \begin{file}{\texttt{packages/std/src/bbAdd.xml}}
 \small
@@ -623,34 +626,131 @@ describing the \texttt{Add} box of the \texttt{std} package :
 \end{verbatim}
 \end{file}
 
-The tags and their role are easily understandable.
-
-As the box is not a widget, we inherit implicitely from 
+As the box is not a widget, it implicitly inherits from 
 \texttt{bbtk::AtomicBlackBox} (the default).
 
-The only part of the file which needs a bit of explaination is 
+The tags and their role are (hopefully) easily understandable.
+The only part of the file, which needs a bit of explanation, is 
 the body of the \texttt{process} tag, which describes the 
 actual code to execute in the box. 
 This code must be enclosed in a \texttt{<PRE></PRE>} tag 
 to tell the \xml parser not to interpret it as \xml instructions. 
-This is necessary to be able to use any symbol, 
-like the \texttt{<} and \texttt{>} which have a 
-special meaning in \xml. 
+Thus we will be able to use such symbols as \texttt{<} and \texttt{>}, which have a 
+special meaning in \xmlns. 
+
 In the case of the \texttt{Add} box, the process code 
-is very simple : remember that 
-\texttt{bbGetInputIn1()} is the 
-accessor to the input \texttt{In1} declared above and 
-\texttt{bbGetInputIn2()} is the 
-accessor to the input \texttt{In2};  
+is very simple. Remember that 
+\texttt{bbGetInputIn1()} and 
+\texttt{bbGetInputIn2()} respectively are the 
+accessors to the inputs \texttt{In1} and \texttt{In2} declared above;  
 the code simply adds the values of the two inputs 
 and sets the output \texttt{Out} with the resulting value.
 
-To describe your own black boxes in \xml code, 
-you must modify the xml file generated by \bbCreateBlackBox : 
+Note that the afore cited code of the \texttt{Add} box was cleaned so as to only contain the necessary lines.
+The actual \xml file generated by \bbCreateBlackBox utility is more complete. 
+It contains many comments to guide you, it already includes the informations you provided when running the \bbCreateBlackBoxns, and it looks like this:
+
+\begin{file}{\texttt{MyPackage/bbMyPackageMyBox.xml}}
+\small
+\begin{verbatim}
+<!--=======================================================================
+   STARTS THE DESCRIPTION OF THE BLACK BOX -->
+<blackbox name="MyBox">
+<!--====================================================================-->
+
+  <!--=====================================================================
+    THE BOX DOCUMENTATION -->
+
+  <author>myself</author>
+  <description>no idea of what it can do</description>
+  <category>__CATEGORY__</category>
+  <!--==================================================================-->
+
+  <!--=====================================================================
+    #include directives to be put in the .h generated
+    There must be one tag per file to include
+    Here we include the standard header iostream.h -->
+  <include><PRE>iostream</PRE></include>
+  <!--==================================================================-->
+
+  <!--=====================================================================
+    INPUTS/OUTPUTS DECLARATION -->
+  <!-- Declares an input with name 'In', type 'double' 
+      and description 'First input' -->
+
+  <input name="In" type="double" description="First input"/>
+  
+  <!-- Declares an output with name 'Out', type 'double' 
+      and description 'First output' -->
+  <output name="Out" type="double" description="First output"/>
+  <!--==================================================================-->
+
+  <!--=====================================================================
+    THE PROCESSING METHOD BODY :
+    Here simply copies the value of the input 'In' to the output 'Out'
+    And prints out the value
+    INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+      void bbSet{Input|Output}NAME(const TYPE&)
+      const TYPE& bbGet{Input|Output}NAME() const 
+    Where :
+    * NAME is the name of the input/output
+      (the one provided in the attribute 'name' of the tag 'input')
+    * TYPE is the C++ type of the input/output
+      (the one provided in the attribute 'type' of the tag 'input')     -->
+
+  <process>
+  <PRE>
+    bbSetOutputOut( bbGetInputIn() );
+    std::cout << "Output value = " <<bbGetOutputOut() << std::endl;
+  </PRE>
+  </process>
+  <!--==================================================================-->
+
+  <!--=====================================================================
+    CONSTRUCTORS / DESTRUCTORS (OPTIONAL) 
+    THE CONSTRUCTION METHOD BODY :
+    Here initializes the input 'In' to 0
+    This is also where you should allocate the output pointers -->
+  <constructor>
+  <PRE>
+    bbSetInputIn(0);
+  </PRE>
+  </constructor>
+
+  <!-- THE COPY-CONSTRUCTION METHOD BODY :
+    Here does nothing 
+    But this is where you should allocate the output pointers if any
+    and copy the pointed values (to avoid bug caused by multiple refs)  -->
+  <copyconstructor>
+  <PRE>
+  </PRE>
+  </copyconstructor>
+
+  <!-- THE DESTRUCTION METHOD BODY :
+    Here does nothing 
+    but this is where you should desallocate the output pointers if any -->
+  <destructor>
+  <PRE>
+  </PRE>
+  </destructor>
+  <!--==================================================================-->
+
+<!--====================================================================-->
+<!-- END OF BLACK BOX DESCRIPTION -->
+</blackbox>
+<!--====================================================================-->
+<!--====================================================================-->
+<!--====================================================================-->
+<!--====================================================================-->
+\end{verbatim}
+\end{file}
+
+To describe your own black box in \xml code, 
+you have to modify this \xml file as follows: 
 
 \begin{enumerate}
-  \item Complete the description and author tags if you feel like.
-  \item Add the \texttt{\#include} directives to be put in the generated \texttt{.h} file
+  \item Complete the category, description and author tags if you feel like.
+  \item Add the \texttt{\#include} directives to be put in the generated \texttt{.h} file (the example given in the \xml file includes the standard \texttt{iostream} header; depending on the actual file to be included, you will have to put or omit the \texttt{.h} extension).
   \item Create your inputs and outputs
   \item Fill in the process tag
   \item Fill in the constructor tag
@@ -658,8 +758,10 @@ you must modify the xml file generated by \bbCreateBlackBox :
   \item Fill in the destructor tag
 \end{enumerate}
 
+
+
 % ==========================================
-\subsubsection{Writting new widget boxes in \xml}
+\subsubsection{Writing new widget boxes in \xml}
 % ==========================================
 See the example \texttt{packages/wx/src/bbwxOutputText.xml}
 
@@ -669,10 +771,12 @@ See the example \texttt{packages/wx/src/bbwxOutputText.xml}
 <blackbox name="OutputText" widget>
 
   <author>laurent.guigues at creatis.insa-lyon.fr</author>
-  <description>Text zone to be inserted into a window (wxStaticText)</description>
+  <description>Text zone to be inserted into a window (wxStaticText)
+                                                             </description>
   <category></category>
 
-  <input name="Title" type="std::string" description="Title prepended to the text"/>
+  <input name="Title" type="std::string" 
+                                 description="Title prefixed to the text"/>
   <input name="In" type="std::string" description="Text"/>
 
   <createwidget><PRE>
@@ -684,11 +788,11 @@ See the example \texttt{packages/wx/src/bbwxOutputText.xml}
    std::string msg;
     if (bbGetInputTitle()!="")
       {
-       msg = bbGetInputTitle()+": " + bbGetInputIn();
+        msg = bbGetInputTitle()+": " + bbGetInputIn();
       }  
     else 
       {
-       msg = bbGetInputIn();
+        msg = bbGetInputIn();
       }
    ((wxStaticText*)bbGetOutputWidget())->SetLabel( bbtk::std2wx( msg ) ); 
   </PRE></process>
@@ -698,113 +802,111 @@ See the example \texttt{packages/wx/src/bbwxOutputText.xml}
     bbSetInputTitle("");
   </PRE></constructor>    
 
-
 </blackbox>
 \end{verbatim}
 \end{file}
 
-Explainations:
+Explanations:
 \begin{itemize}
-\item The attribute \texttt{widget} of the \texttt{blackbox} tag instructs 
-\bbfy that the box inherits from \texttt{bbtk::WxBlackBox}.
-\item An output called \texttt{'Widget'} of type \texttt{wxWindow*} is 
-automatically declared (you do not have to do it).
-\item The tag \texttt{createwidget} provides the body of the method which creates the widget. At the end of this method the output \texttt{'Widget'} must 
-have been set with the newly created \texttt{wxWindow}. 
-Here we create a new \texttt{wxStaticText}.
-The parent of the widget to create MUST BE the one provided by the method 
-\texttt{bbGetWxParent()} which returns a \texttt{wxWindow*}. 
-To update the static text after creation we simply call the \texttt{Process} 
-method.
-\item The body of the \texttt{process} method simply concatenates the 
-input \texttt{'Title'} (if non empty) and the input \texttt{'In'} and 
-updates the \texttt{wxStaticText}. 
-Remark that to get it, we use the \texttt{bbGetOutputWidget()} method 
-which returns a \texttt{wxWindow*} which we cast into a 
-\texttt{wxStaticText*} to use its specific method \texttt{SetLabel}.
+       \item The attribute \texttt{widget} of the \texttt{blackbox} tag instructs 
+               \bbfy that the box inherits from \texttt{bbtk::WxBlackBox}.
+       \item An output called \texttt{'Widget'} of type \texttt{wxWindow*} is 
+               automatically declared (you do not have to do it).
+       \item The tag \texttt{createwidget} provides the body of the method which creates the widget. 
+               At the end of this method the output \texttt{'Widget'} must 
+               have been set with the newly created \texttt{wxWindow}. 
+               Here we create a new \texttt{wxStaticText}.
+               The parent of the widget to create MUST BE the one provided by the method 
+               \texttt{bbGetWxParent()} which returns a \texttt{wxWindow*}. 
+               To update the static text after creation we simply call the \texttt{Process} 
+               method.
+       \item The body of the \texttt{process} method simply concatenates the 
+               input \texttt{'Title'} (if non empty) and the input \texttt{'In'} and 
+               updates the \texttt{wxStaticText}. 
+               Remark that to get it, we use the \texttt{bbGetOutputWidget()} method 
+               which returns a \texttt{wxWindow*} which we cast into a 
+               \texttt{wxStaticText*} to use its specific method \texttt{SetLabel}.
 \end{itemize}
 
 More complex examples can be found in the \texttt{package/wx/src} folder.
 
 % ==========================================
 \subsubsection{Specific \texttt{xml} tags for \texttt{vtkImageAlgorithm} classes bbfication by inheritance}
+\label{sec:Specific-VTK}
 % ==========================================
-If you wish to bbfy a \vtk object which is a \texttt{vtkImageAlgorithm} 
-(such as \texttt{vtkImageGaussianSmooth}, \texttt{ImageAnisotropicDiffusion3D},
-...) we recommand you do it in \xml (you can have a look at the examples 
-in the \vtk core package 'src' folder). 
-The bbfication mechanism is inheritance.
+To 'bbfy' \texttt{vtkImageAlgorithm} classes such as \texttt{vtkImageAnisotropicDiffusion3D},  
+we recommend you the use of \xmlns. You can have a look at the examples 
+in the \vtk core package 'src' folder. 
+The bbfication mechanism is inheritance. In the \xml file you have to add:
 
-You have to add the attribute \texttt{type="VTK\_ImageAlgorithm"} 
-to the \texttt{blackbox} tag :
-\begin{verbatim}
-<blackbox name="..." type="VTK_ImageAlgorithm">
-\end{verbatim}
-
-You have to had an include tag which includes the vtk parent header, such as :
-\begin{verbatim}
-<include> vtkImageAnisotropicDiffusion3D.h </include> 
-\end{verbatim}
-
-You have to add the tag \texttt{vtkparent} which gives the \vtk parent of the box, e.g.:
-\begin{verbatim}
-<vtkparent> vtkImageAnisotropicDiffusion3D </vtkparent>
-\end{verbatim}
+\begin{itemize}
+\item the attribute \texttt{type="VTK\_ImageAlgorithm"} 
+       to the \texttt{blackbox} tag:
+       \begin{verbatim}
+               <blackbox name="..." type="VTK_ImageAlgorithm">
+       \end{verbatim}
+
+\item the tag \texttt{vtkparent} which gives the \vtk parent of the box, e.g.:
+       \begin{verbatim}
+               <vtkparent> vtkImageAnisotropicDiffusion3D </vtkparent>
+       \end{verbatim}
+
+\item an \texttt{include} tag to include the appropriate \vtk parent header, such as:
+       \begin{verbatim}
+               <include> vtkImageAnisotropicDiffusion3D.h </include> 
+       \end{verbatim}
+\end{itemize}
 
-The \vtk algorithm input/ouput are wrapped directly using the 
-\texttt{special} attributes of the input and output tags. 
-A typical example is :
+The \vtk algorithm inputs/ouputs are wrapped directly using the 
+\texttt{special} attributes of the \texttt{input} and \texttt{output} tags. 
+A typical example is:
 \begin{verbatim}
 <input name="In"   type="vtkImageData*" special="vtk input" 
        description="Input image"/>
 <output name="Out"  type="vtkImageData*" special="vtk output"    
         description="Output image"/>
 \end{verbatim}
-The attribute \texttt{special="vtk input"} of the input 'In' definition 
+In this example, the attribute \texttt{special="vtk input"} of the input 'In' definition 
 directly connects it to the input of the vtk object the box inherits. 
 No additional code is needed, the vtk object will directly receive 
 the value of this input. 
-The same mechanism hold for the output.
+The same mechanism holds for the output.
 
-The parameters of the vtk object which are declared using 
-\texttt{vtkSetMacro} and \texttt{vtkGetMacro} can also be directly 
-wrapped using the attribute \texttt{special="vtk parameter"} of the input tag,
-e.g. :
+Similarly, the attribute \texttt{special="vtk parameter"} of the \texttt{input} tag permits to directly 
+wrap the parameters of the vtk object, which are declared using 
+\texttt{vtkSetMacro} and \texttt{vtkGetMacro}, e.g.:
 \begin{verbatim}
-<input  name="DiffusionThreshold"  type="double" special="vtk parameter" 
+<input name="DiffusionThreshold" type="double" special="vtk parameter" 
         description="Difference threshold that stops diffusion"/>
 \end{verbatim}
-The attribute \texttt{special="vtk parameter"} 
-of the input called \texttt{DiffusionThreshold} instructs \bbfy to 
-directly call the \texttt{SetDiffusionThreshold} and 
+Here, the attribute \texttt{special="vtk parameter"} 
+of the input \texttt{DiffusionThreshold} instructs \bbfy to call the \texttt{SetDiffusionThreshold} and 
 \texttt{GetDiffusionThreshold} 
-methods of the vtk parent when needed. 
+methods of the \vtk parent, when needed. 
 
-{\bf NOTE :} 
+{\bf NOTE:} 
 For this mechanism to work, 
-the name of the \bbtk input MUST be the same than the name 
+the name of the \bbtk input MUST be the same as the name 
 of the \vtk parent parameter. 
 
 No \texttt{process} method has to be given, 
 \bbfy generates a process body for you, which simply calls the 
-\texttt{Update()} method of the vtk parent.
+\texttt{Update()} method of the \vtk parent.
 
-{\bf NOTE :}
-you can write your own \texttt{process} code which will overload 
-the default. Don't forget to call Update()
+{\bf NOTE:}
+You can write your own \texttt{process} code which will overload 
+the default. Don't forget to call \texttt{Update()}
 See \texttt{packages/vtk/src/bbvtkConeSource.xml} for an example.
 
 % ==========================================
 \subsubsection{Specific \texttt{xml} tags for \texttt{vtkPolyDataAlgorithm} classes bbfication by inheritance}
 % ==========================================
-If you wish to bbfy a \vtk object which is a \texttt{vtkPolyDataAlgorithm} 
-(such as \texttt{vtkConeSource}, ...) 
-we recommand you do it in \xml (you can have a look at the examples 
+To bbfy \texttt{vtkPolyDataAlgorithm} classes such as \texttt{vtkConeSource},  
+we also recommend the use of \xml (you can have a look at the examples 
 in the \vtk core package 'src' folder). 
-The bbfication mechanism is inheritance.
-
-You must use the same \xml tags and attributes than for wrapping a 
-\texttt{vtkImageAlgorithm} (see above) : 
+The bbfication mechanism is inheritance. 
+You have to use the same \xml tags and attributes as for wrapping a 
+\texttt{vtkImageAlgorithm} (see above): 
 
 \begin{verbatim}
 <blackbox name="..." type="VTK_PolyDataAlgorithm">
@@ -816,11 +918,11 @@ You must use the same \xml tags and attributes than for wrapping a
         description="..."/>
 <input  name="..."  type="double"       special="vtk parameter" 
         description="..."/>
-
 \end{verbatim}
 
 % ==========================================
 \subsubsection{Specific \texttt{xml} tags for \texttt{itk::ImageToImageFilter} classes bbfication by inheritance}
+\label{sec:Specific-ITK}
 % ==========================================
 
 to be written...
@@ -831,91 +933,79 @@ to be written...
 \subsubsection{\bbfy \texttt{xml} tags reference}
 % ==========================================
 
- See tables \ref{xml_tags}, \ref{xml_tags2}
+% See tables \ref{xml_tags}, \ref{xml_tags2}
 % ==========================================
 \begin{table}[!ht]
 \caption{\label{xml_tags}
-\bbfy \texttt{xml} tags reference (part 1)}
+\bbfy \texttt{xml} tags reference (part 1). \emph{'Cond' stands for 'Condition' (see Tab.\ref{xml_tags-conditions}), while 'Mult' stands for 'Multiplicity'}}
 \small
-\begin{tabular}{|lcllm{6cm}|}
+\begin{tabular}{|lcllm{5.7cm}|}
 \hline
-Tag & Attributes & Condition & Multiplicity & Description
- \\ \hline
-
-\texttt{<blackbox>} & \texttt{name} & - & 1 & The name of the box \\ \hline
-               & \texttt{type} & - & 1 & The type of the box. In: 
-       \{\texttt{standard} (default), 
-\texttt{ITK\_ImageToImageFilter},
-\texttt{VTK\_ImageAlgorithm},
-\texttt{VTK\_PolyDataAlgorithm}\} \\\hline
-& \texttt{generic} & a) & 0-1 & 
-Generate the generic filter (see text)\\ \hline 
-& \texttt{widget} & - & 1 & 
-If present then the box inherits from \texttt{WxBlackBox} 
-(\texttt{AtomicBlackBox} if absent)
-\\ \hline 
-\texttt{<description>} & - & - & 0-n &  The description of the box. Multiple occurrence are concatenated \\\hline 
-\texttt{<author>} & - & - & 0-n &  The author of the box. Multiple occurrence are concatenated \\\hline 
-\texttt{<category>} & - & - & 0-1 &  The box category (if more than one, they are separated with commas) see Tab \ref{categories}\\\hline 
-\texttt{<namespace>} & - & - & 0-1 &  The namespace of the box. 
-Use \texttt{bbPACKAGE}, where \texttt{PACKAGE} is the name of the package\\\hline 
-\texttt{<include>} & - & - & 0-n & Additionnal file to include 
-(generates : \texttt{\#include 'value'})\\\hline 
-
-\texttt{<template>} & - & - & 0-n &  Template parameter of the box. The template parameter list is generated in the order of appearance of the tag. \\\hline 
-
-\texttt{<itkparent>} &  - & a) &  1 & The parent itk class (with namespace) \\\hline
-
-\texttt{<vtkparent>} &  - & b) &  1 & The parent vtk class \\\hline
-
-\texttt{<input>} & \texttt{name} & - & 1 &  The name of the input \\\hline 
-        & \texttt{type} & - & 1 &  The type of the input \\\hline 
-        & \texttt{special} & - & 0-1 & In: \{\texttt{'itk input', 
-'vtk input', 'itk parameter', 'vtk parameter'}\} (see below).\\\hline 
-        & \texttt{generic\_type} & c) & 0-1 & The ``generic'' type of the input (see text). \\\hline 
-
-
- \end{tabular}
- \end{table}
+Tag & Attributes & Cond & Mult & Description \\ \hline
+
+\texttt{<blackbox>} & \texttt{name} & - & 1 & The name of the box \\ \cline{5-5}
+               & \texttt{type} & - & 1 & The type of the box, belongs to: 
+               
+                                                       \{\texttt{standard} (default), 
+       
+                                                       \texttt{ITK\_ImageToImageFilter},
+                                                       \texttt{VTK\_ImageAlgorithm},
+                                                       \texttt{VTK\_PolyDataAlgorithm}\} \\ \cline{5-5}
+               & \texttt{generic} & a) & 0-1 & Generate the generic filter (see text)\\ \cline{5-5} 
+               & \texttt{widget} & - & 1 & If present then the box inherits from \texttt{WxBlackBox}, otherwise it inherits from  \texttt{AtomicBlackBox} \\ \hline 
+\texttt{<description>} & - & - & 0-n &  The description of the box. Multiple occurrences are concatenated \\ \hline 
+\texttt{<author>} & - & - & 0-n &  The author of the box. Multiple occurrences are concatenated \\ \hline 
+\texttt{<category>} & - & - & 0-1 &  Categories the box belongs to (see Tab.~\ref{categories}), separated by semi-colons \\ \hline 
+\texttt{<namespace>} & - & - & 0-1 &  The namespace of the box, use \texttt{bb\emph{PACKAGE}}, where \texttt{\emph{PACKAGE}} is the name of the package\\ \hline 
+\texttt{<include>} & - & - & 0-n & Additional file to include, generates \texttt{\#include \emph{filename}}\\ \hline 
+\texttt{<itkparent>} &  - & a) &  1 & The parent \itk class (with namespace) \\ \hline
+\texttt{<vtkparent>} &  - & b) &  1 & The parent \vtk class \\ \hline
+\texttt{<input>} & \texttt{name} & - & 1 &  The name of the input \\ \cline{5-5} 
+        & \texttt{type} & - & 1 &  The type of the input \\ \cline{5-5} 
+        & \texttt{special} & - & 0-1 & Directly wraps either of the following: \{\texttt{vtk input, vtk parameter, itk input, itk parameter}\}, see sections \ref{sec:Specific-VTK} and \ref{sec:Specific-ITK}.\\ \cline{5-5} 
+        & \texttt{generic\_type} & c) & 0-1 & The ``generic'' type of the input (see text). \\ \hline 
+ \texttt{<output>} & \texttt{name} & - & 1 &  The name of the output \\ \cline{5-5} 
+        & \texttt{type} & - & 1 &  The type of the output \\ \cline{5-5} 
+        & \texttt{special} & - & 0-1 & Directly wraps either of the following: \{\texttt{itk output, vtk output}\}, see sections \ref{sec:Specific-VTK} and \ref{sec:Specific-ITK}.\\ \cline{5-5}
+        & \texttt{generic\_type} & c) & 0-1 & The ``generic'' type  of the output (see text).\\ \cline{5-5}  
+        & \texttt{nature} & c) & 0-1 & The ``nature'' of the output (used for automatic GUI generation).\\\hline 
+\end{tabular}
+\end{table}
+
 \begin{table}[!ht]
 \caption{\label{xml_tags2}
-\bbfy \texttt{xml} tags reference (part 2)}
+\bbfy \texttt{xml} tags reference (part 2). \emph{'Cond' stands for 'Condition' (see Tab.\ref{xml_tags-conditions}), while 'Mult' stands for 'Multiplicity'}}
 \small
-\begin{tabular}{|lcllm{6cm}|}
+\begin{tabular}{|lcllm{5.5cm}|}
 \hline
-Tag & Attributes & Condition & Multiplicity & Description
- \\ \hline
- \texttt{<output>} & \texttt{name} & - & 1 &  The name of the output \\\hline 
-        & \texttt{type} & - & 1 &  The type of the output \\\hline 
-        & \texttt{special} & - & 0-1 & In: \{\texttt{'itk output', 
-'vtk output'}\} (see below).\\\hline
-        & \texttt{generic\_type} & c) & 0-1 & The ``generic'' type  of the output (see text).\\\hline  
-        & \texttt{nature} & c) & 0-1 & The ``nature'' of the output (used for automatic GUI generation).\\\hline 
-\texttt{<process>} & - & - & 0-1 & The code of the processing method of the box. Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline 
-\texttt{<createwidget>} & - & d) & 0-1 & The code of the widget creation 
-method of the box. Must be put between clear tags : \texttt{<PRE></PRE>} 
-\\\hline 
-\texttt{<constructor>} & - & - & 0-1 & The code of the user Constructor of the box (may contains default initialisations). Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline 
-\texttt{<copyconstructor>} & - & - & 0-1 & The code of the user Copy Constructor of the box . Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline
-\texttt{<destructor>} & - & - & 0-1 & The code of the user Destructor of the box. Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline
- \end{tabular}
- \end{table}
+Tag & Attributes & Cond & Mult & Description\\ \hline
+\texttt{<template>} & - & - & 0-n &  Template parameter of the box. The template parameter list is generated in the order of appearance of the tag. \\ \hline 
+\texttt{<process>} & - & - & 0-1 & The code of the processing method of the box. Must be put between clear tags: \texttt{<PRE></PRE>} \\ \hline 
+\texttt{<createwidget>} & - & d) & 0-1 & The code of the widget creation method of the box. Must be put between clear tags: \texttt{<PRE></PRE>} \\ \hline 
+\texttt{<constructor>} & - & - & 0-1 & The code of the user Constructor of the box (may contains default initialisations). Must be put between clear tags: \texttt{<PRE></PRE>} \\ \hline 
+\texttt{<copyconstructor>} & - & - & 0-1 & The code of the user Copy Constructor of the box. Must be put between clear tags: \texttt{<PRE></PRE>} \\ \hline
+\texttt{<destructor>} & - & - & 0-1 & The code of the user Destructor of the box. Must be put between clear tags: \texttt{<PRE></PRE>} \\ \hline
+\end{tabular}
+\end{table}
  
- \newpage
+%\newpage
  
 % ==========================================
 \begin{table}[!ht]
 \caption{\label{xml_tags-conditions}
 \bbfy \texttt{xml} tags conditions}
+\begin{centering}
 \small
 \begin{tabular}{|ll|}
 \hline
 a) & \texttt{<blackbox type == 'ITK\_ImageToImageFilter'>} \\ \hline
-b) & \texttt{<blackbox type == 'VTK\_ImageAlgorithm' or 'VTK\_PolyDataAlgorithm'>} \\ \hline
-c) & \texttt{<blackbox type == 'ITK\_ImageToImageFilter'>} and 
-     \texttt{<blackbox generic>} is present. \\ \hline
+b) & \texttt{<blackbox type == 'VTK\_ImageAlgorithm'} \texttt{or 'VTK\_PolyDataAlgorithm'>} \\ \hline
+c) & \texttt{<blackbox type == 'ITK\_ImageToImageFilter'>} \\
+\multicolumn{2}{|r|}{and \texttt{<blackbox generic>} is present.} \\ \hline
 d) & \texttt{<blackbox widget>} is present \\ \hline
 \end{tabular}
+
+\end{centering}
 \end{table}
 
 %\begin{table}[!ht]
@@ -944,10 +1034,10 @@ d) & \texttt{<blackbox widget>} is present \\ \hline
  \texttt{adaptor}        & : Adaptor box                                      \\ \hline
  \texttt{application}    & : Final application, end user intended             \\ \hline
  \texttt{atomic box}     & : System category.
-              Automatically assigned to Atomic Black Boxes (c++ defined)     \\ \hline
+              Automatically assigned to (\CPP defined) Atomic Black Boxes     \\ \hline
  \texttt{complex box}    & : System category.
-              Automatically assigned to Complex Black Boxes (script defined) \\ \hline  
- \texttt{command line}   & : Script which defines a command line application (no embedded GUI, but command line imput parameters) \\ \hline
+              Automatically assigned to (script defined) Complex Black Boxes \\ \hline  
+ \texttt{command line}   & : Script that defines an application without embedded GUI, but with command-line input parameters) \\ \hline
  \texttt{demo}           & : Demonstration                             \\ \hline
  %\texttt{devel}          & : Developer tool (bbCreatePackage.bbs, ...) \\ \hline
  \texttt{dicom}          & : DICOM aware box \\ \hline 
@@ -963,25 +1053,23 @@ d) & \texttt{<blackbox widget>} is present \\ \hline
  \texttt{widget}         & : Piece of graphical interface  \\ \hline 
  
  \texttt{3D object creator} & : Sophisticated 3D widget  \\ \hline  
- \texttt{toolsbbtk}         & : \bbtk development tools (GUICreatePackage, GUICreateBlackBox,...)   \\ \hline  
+ \texttt{toolsbbtk}         & : \bbtk development tools such as \\
+                                                                                                               & GUICreatePackage, GUICreateBlackBox, etc.   \\ \hline  
 \end{tabular}
 \end{table}
 
 
 % ==========================================
 \begin{table}[!ht]
-\caption{\label{kinds}\texttt{Black box} kinds}
+\caption{\label{kinds}\texttt{Black box} kinds. The notion of 'kind' corresponds to special black boxes that are automatically added to the user-defined pipeline} 
 \small
 \begin{tabular}{|p{4cm}p{8cm}|}
 \hline
- \texttt{Kind}     &  Use as :     \\ \hline & \\ \hline
- \texttt{ADAPTOR} & \\ \hline
- \texttt{DEFAULT\_ADAPTOR} & \\ \hline 
- \texttt{WIDGET\_ADAPTOR} & \\ \hline 
- \texttt{DEFAULT\_WIDGET\_ADAPTOR} & \\ \hline
- \texttt{GUI} & \\ \hline 
- \texttt{DEFAULT\_GUI} & \\ \hline 
- \texttt{ALL} & If kind='ALL' then sets the level for all kinds\\ \hline  
+ \texttt{Kind}     &   Description    \\ \hline & \\ \hline
+ \texttt{ADAPTOR} & black box that carries out a type-conversion (cast), so that a connection between an output and an input can be properly made \\ \hline
+ \texttt{DEFAULT\_ADAPTOR} & indicates the preferred one, if several boxes can carry out the same type-conversion\\ \hline 
+ \texttt{GUI} & black box usable by the \texttt{newgui} command that tries to automatically assign a graphical interface according to the input types\\ \hline 
+ \texttt{DEFAULT\_GUI} & indicates the preferred one, if several boxes can provide the expected features\\ \hline 
 \end{tabular}
 \end{table}
 
@@ -990,7 +1078,7 @@ d) & \texttt{<blackbox widget>} is present \\ \hline
 \begin{table}[!ht]
 \caption{\label{nature}Input/output \texttt{natures}}
 \small
-\begin{tabular}{|ll|}
+\begin{tabular}{|p{4cm}p{8cm}|}
 \hline
  \texttt{Nature}     &   : Associated \texttt{DEFAULT\_GUI} box   \\ \hline 
 & \\ \hline
@@ -1007,18 +1095,12 @@ d) & \texttt{<blackbox widget>} is present \\ \hline
 \end{tabular}
 \end{table}
 
-.\\
-.\\
-.\\
-.\\
-.\\
-
-
-\newpage 
+%\newpage 
 
 
 % ==========================================
 \subsection{\CPP description of a box}
+\label{sec:CPP-box}
 % ==========================================
 
 Almost everything is performed using macros.
@@ -1085,7 +1167,7 @@ each box of a given package, say PACK, must be inserted into
 the namespace \texttt{bbPACK}.
 
 The macro \texttt{BBTK\_BLACK\_BOX\_INTERFACE} 
-declares the interface of the class : constructor, destructor,
+declares the interface of the class: constructor, destructor,
 standard methods (e.g. New), etc. 
 The following macros then declare inputs and outputs of the box, 
 with their types.
@@ -1105,38 +1187,38 @@ The black box interface macros are summarized in table
 \begin{table}[!ht]
 \caption{\label{CPPInterfaceBasicMacros}Black box interface \CPP macros}
 \begin{tabular}{p{\textwidth}}\hline
-    \\ \small \texttt{BBTK\_BLACK\_BOX\_INTERFACE(BOX\_NAME,BBTK\_PARENT)} :
+    \\ \small \texttt{BBTK\_BLACK\_BOX\_INTERFACE(BOX\_NAME,BBTK\_PARENT)}:
     Yes, we know the \bbtk parent is redundant with the inheritance list... That's why we allow you to describe your class in \xml format!
-     \\ \small \texttt{BBTK\_VTK\_BLACK\_BOX\_INTERFACE(CLASS,BBTK\_PARENT,VTK\_PARENT) } : Black box interface for \vtk object inherited boxes
+     \\ \small \texttt{BBTK\_VTK\_BLACK\_BOX\_INTERFACE(CLASS,BBTK\_PARENT,VTK\_PARENT) }: Black box interface for \vtk object inherited boxes
        \dots
-    \\ \small \texttt{BBTK\_ITK\_BLACK\_BOX\_INTERFACE(CLASS,BBTK\_PARENT,ITK\_PARENT) } : Black box interface for \itk object inherited boxes
+    \\ \small \texttt{BBTK\_ITK\_BLACK\_BOX\_INTERFACE(CLASS,BBTK\_PARENT,ITK\_PARENT) }: Black box interface for \itk object inherited boxes
        \dots
-    \\ \small \texttt{BBTK\_DECLARE\_INPUT (NAME,TYPE) } : Declares an input of the box, with \texttt{NAME} : the input name (as it will appear to the users of your black box) and \texttt{TYPE} : \CPP type of the input (e.g. double, std::string, vtkImageData*, ...).
-  \\ \small \texttt{BBTK\_DECLARE\_INHERITED\_INPUT(NAME,TYPE,GETMETHOD,SETMETHOD)} : Declares an input of the box which wraps the \texttt{GETMETHOD / SETMETHOD} accessors
-    \\ \small \texttt{BBTK\_DECLARE\_VTK\_INPUT(NAME,TYPE)} :
+    \\ \small \texttt{BBTK\_DECLARE\_INPUT (NAME,TYPE) }: Declares an input of the box, with \texttt{NAME}: the input name (as it will appear to the users of your black box) and \texttt{TYPE}: \CPP type of the input (e.g. double, std::string, vtkImageData*, ...).
+  \\ \small \texttt{BBTK\_DECLARE\_INHERITED\_INPUT(NAME,TYPE,GETMETHOD,SETMETHOD)}: Declares an input of the box which wraps the \texttt{GETMETHOD / SETMETHOD} accessors
+    \\ \small \texttt{BBTK\_DECLARE\_VTK\_INPUT(NAME,TYPE)}:
         Declares a vtk object-inherited input
-   \\ \small \texttt{BBTK\_DECLARE\_VTK\_IMAGE\_ALGORITHM\_INPUT(NAME,TYPE)} :    Declares a vtkImageAlgorithm-inherited input 
-    \\ \small \texttt{BBTK\_DECLARE\_VTK\_POLY\_DATA\_ALGORITHM\_INPUT(NAME,TYPE)} : Declares a vtkPolyDataAlgorithm-inherited input  
-    \\ \small \texttt{BBTK\_DECLARE\_ITK\_INPUT (NAME,TYPE)} :
+   \\ \small \texttt{BBTK\_DECLARE\_VTK\_IMAGE\_ALGORITHM\_INPUT(NAME,TYPE)}:    Declares a vtkImageAlgorithm-inherited input 
+    \\ \small \texttt{BBTK\_DECLARE\_VTK\_POLY\_DATA\_ALGORITHM\_INPUT(NAME,TYPE)}: Declares a vtkPolyDataAlgorithm-inherited input  
+    \\ \small \texttt{BBTK\_DECLARE\_ITK\_INPUT (NAME,TYPE)}:
         Declares a itk object-inherited input
-  \\ \small \texttt{BBTK\_DECLARE\_OUTPUT (NAME,TYPE) } :
+  \\ \small \texttt{BBTK\_DECLARE\_OUTPUT (NAME,TYPE) }:
        Declares an output of the box 
-  \\ \small \texttt{BBTK\_DECLARE\_INHERITED\_OUTPUT(NAME,TYPE,GETMETHOD,SETMETHOD)} :
+  \\ \small \texttt{BBTK\_DECLARE\_INHERITED\_OUTPUT(NAME,TYPE,GETMETHOD,SETMETHOD)}:
     Declares an output of the box which wraps the \texttt{GETMETHOD / SETMETHOD} accessors
-    \\ \small \texttt{BBTK\_DECLARE\_VTK\_OUTPUT(NAME,TYPE)} :
+    \\ \small \texttt{BBTK\_DECLARE\_VTK\_OUTPUT(NAME,TYPE)}:
        Declares a vtk object-inherited output    
-     \\ \small \texttt{BBTK\_DECLARE\_ITK\_OUTPUT(NAME,TYPE)} :
+     \\ \small \texttt{BBTK\_DECLARE\_ITK\_OUTPUT(NAME,TYPE)}:
         Declares a itk object-inherited output
-   \\ \small \texttt{BBTK\_DECLARE\_VTK\_PARAM(VTK\_PARENT,NAME,TYPE)} :
+   \\ \small \texttt{BBTK\_DECLARE\_VTK\_PARAM(VTK\_PARENT,NAME,TYPE)}:
  Declares an input corresponding to an inherited vtk parameter 
      (you know, the ones that are declared by vtkSetMacro/vtkGetMacro). Its name must be the same than the vtk parameter name. 
-    \\ \small \texttt{BBTK\_DECLARE\_ITK\_PARAM(NAME,TYPE)} :
+    \\ \small \texttt{BBTK\_DECLARE\_ITK\_PARAM(NAME,TYPE)}:
  Declares an input corresponding to an inherited itk parameter 
-    \\ \small \texttt{BBTK\_PROCESS(METHOD\_NAME)} :
+    \\ \small \texttt{BBTK\_PROCESS(METHOD\_NAME)}:
        Defines the method to call when the box is processed. 
-    \\ \small \texttt{BBTK\_VTK\_PROCESS} :                                                    Defines AND implements the default processing method for vtk 
+    \\ \small \texttt{BBTK\_VTK\_PROCESS}                                                    Defines AND implements the default processing method for vtk 
         inherited black boxes (calls \texttt{vtkParent::Update})
-  \\ \small \texttt{BBTK\_ITK\_PROCESS} :                                                      Defines AND implements the default processing method for itk 
+  \\ \small \texttt{BBTK\_ITK\_PROCESS}                                                      Defines AND implements the default processing method for itk 
         inherited black boxes (calls \texttt{itkParent::Update})
 \\ 
 \hline\end{tabular}
@@ -1176,25 +1258,25 @@ are described in table \ref{CPPDescriptorBasicMacros}.
 \begin{table}[!ht]
 \caption{\label{CPPDescriptorBasicMacros}Black box descriptor \CPP macros}
 \begin{tabular}{p{\textwidth}}\hline
-    \\ \small \texttt{BBTK\_BEGIN\_DESCRIBE\_BLACK\_BOX(BOX\_NAME,BBTK\_PARENT) }  
+    \\ \small \texttt{BBTK\_BEGIN\_DESCRIBE\_BLACK\_BOX(BOX\_NAME,BBTK\_PARENT) } : 
     Yes, we know it's redundant with public inheritance ... That's why we allow you to describe your class in xml format! 
     All the following items will be used in the Help interface; describe them carefully (i.e. in a Human understandable way!).
-  \\ \small \texttt{BBTK\_ADAPTOR} : Declares that the box is an adaptor
-  \\ \small \texttt{BBTK\_DEFAULT\_ADAPTOR} : Declares that the box is the default adaptor for its I/O types
-   \\ \small \texttt{BBTK\_NAME(STRING)} : The name of your box 
-    \\ \small \texttt{BBTK\_AUTHOR(STRING)} : The author(s) (better you put e-mail adresses)
-    \\ \small \texttt{BBTK\_DESCRIPTION(STRING)} : Brief description of what does the box
-    \\ \small \texttt{BBTK\_CATEGORY(STRING)} : Box categories, semicolon separated  (see table \ref{categories})
+  \\ \small \texttt{BBTK\_ADAPTOR}: Declares that the box is an adaptor
+  \\ \small \texttt{BBTK\_DEFAULT\_ADAPTOR}: Declares that the box is the default adaptor for its I/O types
+   \\ \small \texttt{BBTK\_NAME(STRING)}: The name of your box 
+    \\ \small \texttt{BBTK\_AUTHOR(STRING)}: The author(s) (better you put e-mail adresses)
+    \\ \small \texttt{BBTK\_DESCRIPTION(STRING)}: Brief description of what does the box
+    \\ \small \texttt{BBTK\_CATEGORY(STRING)}: Box categories, semicolon separated  (see table \ref{categories})
     \\ \small \texttt{BBTK\_INPUT(BOX\_NAME,INPUT\_NAME,DESCRIPTION,CPP\_TYPE,INPUT\_NATURE)} 
        \begin{itemize}
-         \item \texttt{BOX\_NAME} : The current black box name.
-         \item \texttt{INPUT\_NAME} : The input name
-         \item \texttt{DESCRIPTION} (string) : A brief description of what the parameter is used for.
-         \item \texttt{CPP\_TYPE} : The \CPP type of the input (e.g. double, std::string, vtkImageData*, ...) 
-         \item \texttt{INPUT\_NATURE} : The 'nature' of the parameter (see table \ref{nature}) if you wish your box may be used by automatic GUI generator.
+         \item \texttt{BOX\_NAME}: The current black box name.
+         \item \texttt{INPUT\_NAME}: The input name
+         \item \texttt{DESCRIPTION} (string): A brief description of what the parameter is used for.
+         \item \texttt{CPP\_TYPE}: The \CPP type of the input (e.g. double, std::string, vtkImageData*, ...) 
+         \item \texttt{INPUT\_NATURE}: The 'nature' of the parameter (see table \ref{nature}) if you wish your box may be used by automatic GUI generator.
         Supply an empty string ("") if you don't care.          
        \end{itemize}
-    \\ \small\texttt{BBTK\_OUTPUT(BOX\_NAME,OUTPUT\_NAME,DESCRIPTION,CPP\_TYPE)} : The same
+    \\ \small\texttt{BBTK\_OUTPUT(BOX\_NAME,OUTPUT\_NAME,DESCRIPTION,CPP\_TYPE)}: The same
      \\ \small \texttt{BBTK\_END\_DESCRIBE\_BLACK\_BOX(BOX\_NAME)} 
  \\ \hline\end{tabular}
 \end{table}
@@ -1315,18 +1397,18 @@ Class templates related macros are summarized in table \ref{CPPTemplateMacros}.
 % \begin{itemize}
     \\  \small\texttt{BBTK\_TEMPLATE\_BLACK\_BOX\_INTERFACE(BOX\_NAME,BBTK\_PARENT, TEMPLATE\_PARAMETER)}
     \\  \small\texttt{BBTK\_TEMPLATE2\_BLACK\_BOX\_INTERFACE(BOX\_NAME,BBTK\_PARENT, TEMPLATE\_PARAMETER\_1, TEMPLATE\_PARAMETER\_2)}
-    \\  \small\texttt{BBTK\_BEGIN\_DESCRIBE\_TEMPLATE\_BLACK\_BOX(BOX\_NAME,BBTK\_PARENT)} : Note that in the descriptor, the template parameter name is \texttt{T}
-\\ \small\texttt{BBTK\_BEGIN\_DESCRIBE\_TEMPLATE2\_BLACK\_BOX(BOX\_NAME,BBTK\_PARENT)} : Note that in the descriptor, the template parameters names are \texttt{T1} and \texttt{T2}
+    \\  \small\texttt{BBTK\_BEGIN\_DESCRIBE\_TEMPLATE\_BLACK\_BOX(BOX\_NAME,BBTK\_PARENT)}: Note that in the descriptor, the template parameter name is \texttt{T}
+\\ \small\texttt{BBTK\_BEGIN\_DESCRIBE\_TEMPLATE2\_BLACK\_BOX(BOX\_NAME,BBTK\_PARENT)}: Note that in the descriptor, the template parameters names are \texttt{T1} and \texttt{T2}
     \\ \small\texttt{BBTK\_END\_DESCRIBE\_TEMPLATE\_BLACK\_BOX(BOX\_NAME)}
    \\ \small\texttt{BBTK\_END\_DESCRIBE\_TEMPLATE2\_BLACK\_BOX(BOX\_NAME)}
-     \\ \small\texttt{BBTK\_TEMPLATE\_INPUT(BOX\_NAME,INPUT\_NAME,DESCRIPTION,CPP\_TYPE, INPUT\_NATURE)} : Same than for non-templates, except that the \texttt{CPP\_TYPE} can be the template parameter.
-    \\ \small\texttt{BBTK\_TEMPLATE2\_INPUT(BOX\_NAME,INPUT\_NAME,DESCRIPTION,CPP\_TYPE, INPUT\_NATURE)} : Same remark
- \\\small \texttt{BBTK\_TEMPLATE\_OUTPUT(BOX\_NAME,OUTPUT\_NAME,DESCRIPTION,CPP\_TYPE)} : Same remark 
- \\ \small\texttt{BBTK\_TEMPLATE2\_OUTPUT(BOX\_NAME,OUTPUT\_NAME,DESCRIPTION,CPP\_TYPE)} : Same remark 
+     \\ \small\texttt{BBTK\_TEMPLATE\_INPUT(BOX\_NAME,INPUT\_NAME,DESCRIPTION,CPP\_TYPE, INPUT\_NATURE)}: Same than for non-templates, except that the \texttt{CPP\_TYPE} can be the template parameter.
+    \\ \small\texttt{BBTK\_TEMPLATE2\_INPUT(BOX\_NAME,INPUT\_NAME,DESCRIPTION,CPP\_TYPE, INPUT\_NATURE)}: Same remark
+ \\\small \texttt{BBTK\_TEMPLATE\_OUTPUT(BOX\_NAME,OUTPUT\_NAME,DESCRIPTION,CPP\_TYPE)}: Same remark 
+ \\ \small\texttt{BBTK\_TEMPLATE2\_OUTPUT(BOX\_NAME,OUTPUT\_NAME,DESCRIPTION,CPP\_TYPE)}: Same remark 
  \\ \small\texttt{BBTK\_BLACK\_BOX\_TEMPLATE\_IMPLEMENTATION(BOX\_NAME,BBTK\_PARENT)}
  \\ \small\texttt{BBTK\_BLACK\_BOX\_TEMPLATE2\_IMPLEMENTATION(BOX\_NAME,BBTK\_PARENT)}
- \\ \small\texttt{BBTK\_ADD\_TEMPLATE\_BLACK\_BOX\_TO\_PACKAGE(PACKAGE\_NAME,BOX\_NAME, TEMPLATE\_PARAMETER\_VALUE)} : Adds the black box template instanciated on a certain value of its template parameter to the package. You can put as many such lines with different template parameter values as you want (see e.g. \texttt{package/std/src/bbstdStringTo.cxx})
- \\ \small\texttt{BBTK\_ADD\_TEMPLATE2\_BLACK\_BOX\_TO\_PACKAGE(PACKAGE\_NAME,BOX\_NAME, TEMPLATE\_PARAMETER\_1\_VALUE, TEMPLATE\_PARAMETER\_2\_VALUE)} :
+ \\ \small\texttt{BBTK\_ADD\_TEMPLATE\_BLACK\_BOX\_TO\_PACKAGE(PACKAGE\_NAME,BOX\_NAME, TEMPLATE\_PARAMETER\_VALUE)}: Adds the black box template instanciated on a certain value of its template parameter to the package. You can put as many such lines with different template parameter values as you want (see e.g. \texttt{package/std/src/bbstdStringTo.cxx})
+ \\ \small\texttt{BBTK\_ADD\_TEMPLATE2\_BLACK\_BOX\_TO\_PACKAGE(PACKAGE\_NAME,BOX\_NAME, TEMPLATE\_PARAMETER\_1\_VALUE, TEMPLATE\_PARAMETER\_2\_VALUE)}:
 The same for two template parameters (see  e.g. \texttt{package/std/src/bbstdCast.cxx})
 \\
 %\end{itemize}
@@ -1343,7 +1425,7 @@ one must give different names to two instanciations of the template on
 two different types. 
 This is typically done with inserting the template parameter type name in the 
 black box class name.
-An example is provided in \texttt{package/std/src/bbstdStringTo.h} 
+An example is provided in \texttt{package/std/src/bbstdStringTo.h}: 
 
 \begin{verbatim}
   BBTK_BEGIN_DESCRIBE_TEMPLATE_BLACK_BOX(ToString,bbtk::AtomicBlackBox);
@@ -1375,8 +1457,8 @@ in the macro \texttt{BBTK\_DESCRIPTION}, like for example:
 \subsubsection{ITK black boxes \CPP macros}
 % ==========================================
 
-It is a special cas of black box templates with also 
-special macros for itk object inherited black boxes. 
+It is a special case of black box templates with also 
+special macros for \itk object inherited black boxes. 
 
 See the example of \texttt{package/wx/src/bbitkBinaryThresholdImageFilter.h\textbar cxx}, 
 the tables \ref{CPPInterfaceBasicMacros} and \ref{CPPTemplateMacros}.
@@ -1387,5 +1469,24 @@ there is also a mechanism for making
 See the example in the file above.
 
 % ==========================================
+\section{Configure your project with \cmakens.} 
+\label{sec:CMake}
+% ==========================================
+You have to run the \texttt{CMakeSetup} application with your project root directory as location of the sources (this can be done by dragging the icon of the \texttt{CmakeLists.txt} file toward the icon of \texttt{CMakeSetup}). You will have to indicate a location for the binaries, which must be different from the location of the sources. You are likely to encounter some warnings about the compiler version, which you (generally) can ignore. Be careful however with various options, the default state of which is \texttt{OFF}, e.g.: at the very beginning, you will have to put \texttt{ON} the attribute \texttt{BUILD\_BBTK\_PACKAGE\_\emph{your\_package\_name}}. Click on 'Configure' as long as new elements appear or remain in red, then click on 'OK'. \cmake will generate an entire directory tree, with the workspace file (e.g. \texttt{bb\emph{your\_package\_name}.sln} for Microsoft Visual Studio) in the root directory. Note that the tree includes a \texttt{src} directory where the \CPP code of the package is automatically generated.
+% 
+% ==========================================
+\section{Compile your project.}
+\label{sec:compile}
+% ==========================================
+Open the workspace file generated by \texttt{CMakeSetup} (e.g. \texttt{bb\emph{your\_package\_name}.sln} for Microsoft Visual Studio), select either the appropriate project to be built, or \texttt{ALL\_BUILD} if applies. Build it in RelWithDebInfo configuration, which corresponds to the configuration in which the bbtk libraries provided by the installer were compiled. The first step of the \texttt{build} process is the generation of \CPP code from \xml files. Note that these new \texttt{.cxx} and \texttt{.h} files are put into the \texttt{src} subdirectory of the directory tree containing the binaries and {\bf not} of the one containing the sources. Indeed, the 'sources' directory tree is intended to contain actual source files, that are to be saved (e.g. with CVS), while the 'binaries' directory tree is intended to contain all the files generated either by \cmake or by the \texttt{build} process.
+
+% ==========================================
+\section{Plug the new package.}
+\label{sec:plugin}
+% ==========================================
+If you want to use the new package with \bbStudio you can plug it dynamically. Use the menu
+\texttt{Tools > Plug package}. You will be prompted to indicate the package directory. Browse the root of the 'binaries' directory tree (the one generated by \cmakens).
+The plug-in mechanism actually consists in automatic adding of appropriate paths into the configuration file.
+
 \end{document}