diff --git a/source/ftpserver-project/documentation/ch6-internals/ch6-internals.md b/source/ftpserver-project/documentation/ch6-internals/ch6-internals.md
index b2649f9..d9d0802 100644
--- a/source/ftpserver-project/documentation/ch6-internals/ch6-internals.md
+++ b/source/ftpserver-project/documentation/ch6-internals/ch6-internals.md
@@ -46,9 +46,9 @@
         '--| FtpServerContext |
             '----------------'
                      ^
-                     |  .-------------------------.
+                     |   .-----------------------.
                      '--| DefaultFtpServerContext |
-                        '-------------------------'
+                         '-----------------------'
 
 ```
 
@@ -79,7 +79,7 @@
   * _org/apache/ftpserver/message/FtpStatus.gen_
   * _org/apache/ftpserver/message/FtpStatus_&lt;lang&gt;.gen_
 
-## Commandfactory
+## CommandFactory
 
 This factory creates a **Map** which contains the _Command_ instances associated with the command name. The current version support those commands:
 
@@ -201,3 +201,213 @@
 
 * _DbUserManagerFactory_ which takes the information relative to the user from a **SQL** Database
 * _PropertiesUserManagerFactory_ which takes the information relative to the user from properties file
+
+The _User_ class contain information about the users:
+
+* _ftpserver.user.{username}.homedirectory_: Path to the home directory for the user, based on the file system implementation used
+* _ftpserver.user.{username}.userpassword_: The password for the user. Can be in clear text, MD5 hash or salted SHA hash based on the configuration on the user manager
+* _ftpserver.user.{username}.enableflag_: true if the user is enabled, false otherwise
+* _ftpserver.user.{username}.writepermission_: true if the user is allowed to upload files and create directories, false otherwise
+* _ftpserver.user.{username}.idletime_: The number of seconds the user is allowed to be idle before disconnected. 0 disables the idle timeout
+* _ftpserver.user.{username}.maxloginnumber_: The maximum number of concurrent logins by the user. 0 disables the check.
+* _ftpserver.user.{username}.maxloginperip_: The maximum number of concurrent logins from the same IP address by the user. 0 disables the check.
+* _ftpserver.user.{username}.uploadrate_: The maximum number of bytes per second the user is allowed to upload files. 0 disables the check.
+* _ftpserver.user.{username}.downloadrate_: The maximum number of bytes per second the user is allowed to download files. 0 disables the check.
+
+Here is an exemple of file containing some users:
+
+```
+ftpserver.user.admin.homedirectory=./test-tmp/ftproot
+ftpserver.user.admin.userpassword=admin
+ftpserver.user.admin.enableflag=true
+ftpserver.user.admin.writepermission=true
+ftpserver.user.admin.idletime=0
+ftpserver.user.admin.maxloginnumber=0
+ftpserver.user.admin.maxloginperip=0
+ftpserver.user.admin.uploadrate=0
+ftpserver.user.admin.downloadrate=0
+
+```
+
+In any case, we use a _UserManager_ instance to manage the users once read by one of the two previous factories.
+
+### UserManager
+
+The hierarchy is the following:
+
+
+```goat
+
+  .-----------.
+ | UserManager |
+  '-----------'
+        ^
+        |   .-------------------.
+        '--| AbstractUserManager |
+            '-------------------'
+                       ^
+                       |   .-------------.
+                       +--| DbUserManager |
+                       |   '-------------'
+                       |
+                       |   .---------------------.
+                       '--| PropertiesUserManager |
+                           '---------------------'
+```
+
+Those classes are used to get the **User** information. The **User** class stores the following data:
+
+* *authorities*: The user's permissions. One of _WritePermission_, _TransferRatePermission_ and _ConcurrentLoginPermission_
+* *homeDir*: The user's home directory
+* *isEnabled*: A flag set to _true_ if teh user is enabled
+* *maxIdleTimeSec*: The maximum time the user can remain iddle (default to infinite)
+* *name*: The user's name
+* *password*: The hashed user's password
+
+The _User_ interface is used to expose the available methods. The class hierarchy is:
+
+```goat
+
+  .----.
+ | User |
+  '----'
+     ^
+     |   .--------.
+     '--| BaseUser |
+         '--------'
+```
+
+As the users are stored either in a property file or in a SQL Database, we need a way to manage those users. There is a class that can bbe used to add users in those containes: the _AddUser_ class. Otherwise, the _UserManager_ instance can be used to delete or get users from their container. Creating a user programatically can be done either with the _UserFactory_ or by instanciating a _BaseUser_ class.
+
+### FileSystemFactory
+
+This factory will be used to create the directory the user will access. The factory will be used later.
+
+### FtpletContainer
+
+The _FtpletCinainer_ is holding all the _Ftplet_ elements in a _HashMap_.
+
+A _Ftplet_ is a piece of code that get executed before or after a command, and before and after a connection.
+
+Here is the class hierarchy:
+
+```goat
+
+  .------.
+ | Ftplet |
+  '------'
+      ^
+      |   .---------------.
+      '--| FtpletContainer |
+          '---------------'
+                       ^
+                       |   .----------------------.
+                       '--| DefaultFtpletContainer |
+                           '----------------------'
+```
+
+### FtpStatistics
+
+This is used to store statistics about the FtpServer usage. The class hierarchy is teh following:
+
+```goat
+
+  .-------------.
+ | FtpStatistics |
+  '-------------'
+         ^
+         |   .-------------------.
+         '--| ServerFtpStatistics |
+             '-------------------'
+                       ^
+                       |   .--------------------.
+                       '--| DefaultFtpStatistics |
+                           '--------------------'
+```
+
+The _FtpStatistics_ contains all the getters, the _ServerFtpStatistics_ contains all the setters.
+
+The following values are followed:
+
+* _startTime_
+* _uploadCount_
+* _downloadCount_
+* _deleteCount_
+* _mkdirCount_
+* _rmdirCount_
+* _currLogins_
+* _totalLogins_
+* _totalFailedLogins_
+* _currAnonLogins_
+* _totalAnonLogins_
+* _currConnections_
+* _totalConnections_
+* _bytesUpload_
+* _bytesDownload_
+
+The methods are called by the *Command* instances.
+
+### ConnectionConfigFactory
+
+This class create a _ConnectionConfig_ instance.
+
+It manages the following server parameters:
+
+* _maxLogins_
+* _anonymousLoginEnabled_
+* _maxAnonymousLogins_
+* _maxLoginFailures_
+* _loginFailureDelay_
+* _maxThreads_
+
+By default, the server configuration will allow 3 fails login attempts, insert a 500ms delay between each attempt, allow 10 concurrent users, allow 10 anonymous users, and do not limit the number of threads dedicated for command processing.
+
+### Listeners
+
+The _Listeners_ are used to manage communications with the users. We keep a _Map_ of created listeners. Those listeners are created by a _ListenerFactory_.
+
+The _ListenerFactory_ class contains a _DataConnectionConfiguration_ instance which is created by a _DataConnectionConfigurationFactory_ factory class.
+
+The class hierarchy is the following:
+
+```goat
+
+  .--------.
+ | Listener |
+  '--------'
+      ^
+      |   .----------------.
+      '--| AbstractListener |
+          '----------------'
+                  ^
+                  |   .-----------.
+                  '--| NioListener |
+                      '-----------'
+```
+
+The _NioListener_ class is responsible for all the TCP communication with the user. It depends on **MINA** _SocketAcceptor__ class.
+
+The _AbstractListener_ class 
+
+The _SocketAcceptor_ instance is declared with the following parameters:
+
+* _ReuseAddress_ is set to true
+* The read buffer size is set to 2048
+* The receive buffer size is set to 512
+* The idle time is set to 300 seconds
+* The service chain contains, in this order from server to handler:
+  * An optional _SslFilter_
+  * A _MdcInjectionFilter_
+  * An optional _MinaSessionFilter_
+  * A _ExecutorFilter_ 
+  * A _ProtocolCodecFilter_: The decoder is a simple instance of a _TextLineDecoder_. The encoder is an instance of a _FtpResponseEncoder_.
+  * A _MdcInjectionFilter_
+  * A _FtpLoggingFilter_
+
+A _Listener_ instance can be created through a call to the _ListenerFactory.createListener()_ method, it should not be created directly. This method instanciate a _NioListener_ after having chekced that the provided server name is valid.
+
+Internally, it creates a _FtpHandler_ instances, which is used to handle all the incoming *FTP* requests.
+
+The instanciated _listener_ will be added to the map of listeners, as *default*.
+
+The server factory has been created, we now have to create the server and to start it.
