diff --git a/doc/sphinx/book/administration.rst b/doc/sphinx/book/administration.rst
index 2b1ec8d20a2af9af2f40ee940e259a88ce1b267b..e030a78b86a929b8be518b42ceb3931b847fa625 100644
--- a/doc/sphinx/book/administration.rst
+++ b/doc/sphinx/book/administration.rst
@@ -87,7 +87,7 @@ sensitive so ``insert`` and ``Insert`` are not the same thing.
 String literals are: Any sequence of zero or more characters enclosed in
 single quotes. Double quotes are legal but single quotes are preferred.
 Enclosing in double square brackets is good for multi-line strings as
-described in `Lua documentation`_. Examples: 'Hello, world', 'A', [[A\B!]].
+described in `Lua documentation`_. Examples: 'Hello, world', 'A', [[A\\B!]].
 
 .. _Lua documentation: http://www.lua.org/pil/2.4.html
 
diff --git a/doc/sphinx/book/app_d_plugins.rst b/doc/sphinx/book/app_d_plugins.rst
index 85f75ae6180e8c28463be89990a0e92a13082ce3..c8f45a3321587002dcfc9596c0280ca542e53c91 100644
--- a/doc/sphinx/book/app_d_plugins.rst
+++ b/doc/sphinx/book/app_d_plugins.rst
@@ -20,7 +20,7 @@ To call another DBMS from Tarantool, the essential requirements are: another
 DBMS, and Tarantool.
 
 It will be necessary to build Tarantool from source, as described in
-“ :ref:`building-from-source` ”
+“:ref:`building-from-source`”.
 
 .. _Tarantool Plugin API wiki page: https://github.com/tarantool/tarantool/wiki/Plugin-API
 
@@ -34,8 +34,9 @@ which work best when the application can work on both SQL and Tarantool inside
 the same Lua routine.
 
 The connection method is
-``box.net.sql.connect('mysql'|'pg', host, port, user, password, database)``.
-The methods for select/insert/etc. are the same as the ones in the net.box package.
+:samp:`box.net.sql.connect('mysql'|'pg', {host}, {port}, {user}, {password}, {database})`.
+The methods for select/insert/etc. are the same as the ones in the
+:ref:`net.box <package_net_box>` package.
 
 
 ===========================================================
@@ -49,123 +50,121 @@ The example was run on a Linux machine where the base directory had a copy of
 the Tarantool source on ~/tarantool, and a copy of MySQL on ~/mysql-5.5. The
 mysqld server is already running on the local host 127.0.0.1.
 
-::
-
-    # Check that the include subdirectory exists by looking for .../include/mysql.h.
-    # (If this fails, there's a chance that it's in .../include/mysql/mysql.h instead.)
-    $ [ -f ~/mysql-5.5/include/mysql.h ] && echo "OK" || echo "Error"
-    OK
-
-    # Check that the library subdirectory exists and has the necessary .so file.
-    $ [ -f ~/mysql-5.5/lib/libmysqlclient.so ] && echo "OK" || echo "Error"
-    OK
-
-    # Check that the mysql client can connect using some factory defaults:
-    # port = 3306, user = 'root', user password = '', database = 'test'.
-    # These can be changed, provided one uses the changed values in
-    # all places.
-    $ ~/mysql-5.5/bin/mysql --port=3306 -h 127.0.0.1 --user=root --password= --database=test
-    Welcome to the MySQL monitor.  Commands end with ; or \g.
-    Your MySQL connection id is 25
-    Server version: 5.5.35 MySQL Community Server (GPL)
-    ...
-    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-    # Insert a row in database test, and quit.
-    mysql> CREATE TABLE IF NOT EXISTS test (s1 INT, s2 VARCHAR(50));
-    Query OK, 0 rows affected (0.13 sec)
-    mysql> INSERT INTO test.test VALUES (1,'MySQL row');
-    Query OK, 1 row affected (0.02 sec)
-    mysql> QUIT
-    Bye
-
-    # Build the Tarantool server. Make certain that "cmake" gets the right
-    # paths for the MySQL include directory and the MySQL libmysqlclient
-    # library which were checked earlier.
-    $ cd ~/tarantool
-    $ make clean
-    $ rm CMakeCache.txt
-    $ cmake . -DWITH_MYSQL=on -DMYSQL_INCLUDE_DIR=~/mysql-5.5/include\
-    >  -DMYSQL_LIBRARIES=~/mysql-5.5/lib/libmysqlclient.so
-    ...
-    -- Found MySQL includes: ~/mysql-5.5/include/mysql.h
-    -- Found MySQL library: ~/mysql-5.5/lib/libmysqlclient.so
-    ...
-    -- Configuring done
-    -- Generating done
-    -- Build files have been written to: ~/tarantool
-    $ make
-    ...
-    Scanning dependencies of target mysql
-    [ 79%] Building CXX object src/module/mysql/CMakeFiles/mysql.dir/mysql.cc.o
-    Linking CXX shared library libmysql.so
-    [ 79%] Built target mysql
-    ...
-    [100%] Built target man
-    $
-
-    # The MySQL module should now be in ./src/module/mysql/mysql.so.
-    # If a "make install" had been done, then mysql.so would be in a
-    # different place, for example
-    # /usr/local/lib/x86_64-linux-gnu/tarantool/box/net/mysql.so.
-    # In that case there should be additional cmake options such as
-    # -DCMAKE_INSTALL_LIBDIR and -DCMAKE_INSTALL_PREFIX.
-    # For this example we assume that "make install" is not done.
-
-    # Change directory to a directory which can be used for temporary tests.
-    # For this example we assume that the name of this directory is
-    # /home/pgulutzan/tarantool_sandbox. (Change "/home/pgulutzan" to whatever
-    # is the actual base directory for the machine that's used for this test.)
-    # Now, to help tarantool find the essential mysql.so file, execute these lines:
-    cd /home/pgulutzan/tarantool_sandbox
-    mkdir box
-    mkdir box/net
-    cp ~/tarantool/src/module/mysql/mysql.so ./box/net/mysql.so
-
-    # Start the Tarantool server. Do not use a Lua initialization file.
-
-    $ ~/tarantool/src/tarantool
-    ~/tarantool/src/tarantool: version 1.6.3-439-g7e1011b
-    type 'help' for interactive help
-    tarantool>  box.cfg{}
-    ...
-    # Enter the following lines on the prompt (again, change "/home/pgulutzan"
-    # to whatever the real directory is that contains tarantool):
-    package.path = "/home/pgulutzan/tarantool/src/module/sql/?.lua;"..package.path
-    require("sql")
-    if type(box.net.sql) ~= "table" then error("net.sql load failed") end
-    require("box.net.mysql")
-    # ... Make sure that tarantool replies "true" for both calls to "require()".
-
-    # Create a Lua function that will connect to the MySQL server,
-    # (using some factory default values for the port and user and password),
-    # retrieve one row, and display the row.
-    # For explanations of the statement types used here, read the
-    # Lua tutorial earlier in the Tarantool user manual.
-    tarantool> console = require('console'); console.delimiter('!')
-    tarantool> function mysql_select ()
-            ->   local dbh = box.net.sql.connect(
-            ->       'mysql', '127.0.0.1', 3306, 'root', '', 'test')
-            ->   local test = dbh:select('SELECT * FROM test WHERE s1 = 1')
-            ->    local row = ''
-            ->   for i, card in pairs(test) do
-            ->     row = row .. card.s2 .. ' '
-            ->     end
-            ->   return row
-            ->   end!
-    ---
-    ...
-    tarantool> console.delimiter('')!
-    tarantool>
-
-    # Execute the Lua function.
-    tarantool> mysql_select()
-    ---
-    - 'MySQL row '
-    ...
-    # Observe the result. It contains "MySQL row".
-    # So this is the row that was inserted into the MySQL database.
-    # And now it's been selected with the Tarantool client.
+    | :codenormal:`# Check that the include subdirectory exists by looking for .../include/mysql.h.`
+    | :codenormal:`# (If this fails, there's a chance that it's in .../include/mysql/mysql.h instead.)`
+    | :codenormal:`$` :codebold:`[ -f ~/mysql-5.5/include/mysql.h ] && echo "OK" || echo "Error"`
+    | :codenormal:`OK`
+    |
+    | :codenormal:`# Check that the library subdirectory exists and has the necessary .so file.`
+    | :codenormal:`$` :codebold:`[ -f ~/mysql-5.5/lib/libmysqlclient.so ] && echo "OK" || echo "Error"`
+    | :codenormal:`OK`
+    |
+    | :codenormal:`# Check that the mysql client can connect using some factory defaults:`
+    | :codenormal:`# port = 3306, user = 'root', user password = '', database = 'test'.`
+    | :codenormal:`# These can be changed, provided one uses the changed values in`
+    | :codenormal:`# all places.`
+    | :codenormal:`$` :codebold:`~/mysql-5.5/bin/mysql --port=3306 -h 127.0.0.1 --user=root --password= --database=test`
+    | :codenormal:`Welcome to the MySQL monitor.  Commands end with ; or \\g.`
+    | :codenormal:`Your MySQL connection id is 25`
+    | :codenormal:`Server version: 5.5.35 MySQL Community Server (GPL)`
+    | :codenormal:`...`
+    | :codenormal:`Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.`
+    |
+    | :codenormal:`# Insert a row in database test, and quit.`
+    | :codenormal:`mysql>` :codebold:`CREATE TABLE IF NOT EXISTS test (s1 INT, s2 VARCHAR(50));`
+    | :codenormal:`Query OK, 0 rows affected (0.13 sec)`
+    | :codenormal:`mysql>` :codebold:`INSERT INTO test.test VALUES (1,'MySQL row');`
+    | :codenormal:`Query OK, 1 row affected (0.02 sec)`
+    | :codenormal:`mysql>` :codebold:`QUIT`
+    | :codenormal:`Bye`
+    |
+    | :codenormal:`# Build the Tarantool server. Make certain that "cmake" gets the right`
+    | :codenormal:`# paths for the MySQL include directory and the MySQL libmysqlclient`
+    | :codenormal:`# library which were checked earlier.`
+    | :codenormal:`$` :codebold:`cd ~/tarantool`
+    | :codenormal:`$` :codebold:`make clean`
+    | :codenormal:`$` :codebold:`rm CMakeCache.txt`
+    | :codenormal:`$` :codebold:`cmake . -DWITH_MYSQL=on -DMYSQL_INCLUDE_DIR=~/mysql-5.5/include\\`
+    | :codenormal:`>` |nbsp| |nbsp| :codebold:`-DMYSQL_LIBRARIES=~/mysql-5.5/lib/libmysqlclient.so`
+    | :codenormal:`...`
+    | :codenormal:`-- Found MySQL includes: ~/mysql-5.5/include/mysql.h`
+    | :codenormal:`-- Found MySQL library: ~/mysql-5.5/lib/libmysqlclient.so`
+    | :codenormal:`...`
+    | :codenormal:`-- Configuring done`
+    | :codenormal:`-- Generating done`
+    | :codenormal:`-- Build files have been written to: ~/tarantool`
+    | :codenormal:`$` :codebold:`make`
+    | :codenormal:`...`
+    | :codenormal:`Scanning dependencies of target mysql`
+    | :codenormal:`[ 79%] Building CXX object src/module/mysql/CMakeFiles/mysql.dir/mysql.cc.o`
+    | :codenormal:`Linking CXX shared library libmysql.so`
+    | :codenormal:`[ 79%] Built target mysql`
+    | :codenormal:`...`
+    | :codenormal:`[100%] Built target man`
+    | :codenormal:`$`
+    |
+    | :codenormal:`# The MySQL module should now be in ./src/module/mysql/mysql.so.`
+    | :codenormal:`# If a "make install" had been done, then mysql.so would be in a`
+    | :codenormal:`# different place, for example`
+    | :codenormal:`# /usr/local/lib/x86_64-linux-gnu/tarantool/box/net/mysql.so.`
+    | :codenormal:`# In that case there should be additional cmake options such as`
+    | :codenormal:`# -DCMAKE_INSTALL_LIBDIR and -DCMAKE_INSTALL_PREFIX.`
+    | :codenormal:`# For this example we assume that "make install" is not done.`
+    |
+    | :codenormal:`# Change directory to a directory which can be used for temporary tests.`
+    | :codenormal:`# For this example we assume that the name of this directory is`
+    | :codenormal:`# /home/pgulutzan/tarantool_sandbox. (Change "/home/pgulutzan" to whatever`
+    | :codenormal:`# is the actual base directory for the machine that's used for this test.)`
+    | :codenormal:`# Now, to help tarantool find the essential mysql.so file, execute these lines:`
+    | :codebold:`cd /home/pgulutzan/tarantool_sandbox`
+    | :codebold:`mkdir box`
+    | :codebold:`mkdir box/net`
+    | :codebold:`cp ~/tarantool/src/module/mysql/mysql.so ./box/net/mysql.so`
+    |
+    | :codenormal:`# Start the Tarantool server. Do not use a Lua initialization file.`
+    |
+    | :codenormal:`$` :codebold:`~/tarantool/src/tarantool`
+    | :codenormal:`~/tarantool/src/tarantool: version 1.6.3-439-g7e1011b`
+    | :codenormal:`type 'help' for interactive help`
+    | :codenormal:`tarantool>` :codebold:`box.cfg{}`
+    | :codenormal:`...`
+    | :codenormal:`# Enter the following lines on the prompt (again, change "/home/pgulutzan"`
+    | :codenormal:`# to whatever the real directory is that contains tarantool):`
+    | :codenormal:`package.path = "/home/pgulutzan/tarantool/src/module/sql/?.lua;"..package.path`
+    | :codenormal:`require("sql")`
+    | :codenormal:`if type(box.net.sql) ~= "table" then error("net.sql load failed") end`
+    | :codenormal:`require("box.net.mysql")`
+    | :codenormal:`# ... Make sure that tarantool replies "true" for both calls to "require()".`
+    |
+    | :codenormal:`# Create a Lua function that will connect to the MySQL server,`
+    | :codenormal:`# (using some factory default values for the port and user and password),`
+    | :codenormal:`# retrieve one row, and display the row.`
+    | :codenormal:`# For explanations of the statement types used here, read the`
+    | :codenormal:`# Lua tutorial earlier in the Tarantool user manual.`
+    | :codenormal:`tarantool>` :codebold:`console = require('console'); console.delimiter('!')`
+    | :codenormal:`tarantool>` :codebold:`function mysql_select ()`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| :codebold:`local dbh = box.net.sql.connect(`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| |nbsp| :codebold:`'mysql', '127.0.0.1', 3306, 'root', '', 'test')`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| :codebold:`local test = dbh:select('SELECT * FROM test WHERE s1 = 1')`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| :codebold:`local row = ''`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| :codebold:`for i, card in pairs(test) do`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| |nbsp| :codebold:`row = row .. card.s2 .. ' '`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| |nbsp| :codebold:`end`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| :codebold:`return row`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| :codebold:`end!`
+    | :codenormal:`---`
+    | :codenormal:`...`
+    | :codenormal:`tarantool>` :codebold:`console.delimiter('')!`
+    | :codenormal:`tarantool>`
+    |
+    | :codenormal:`# Execute the Lua function.`
+    | :codenormal:`tarantool>` :codebold:`mysql_select()`
+    | :codenormal:`---`
+    | :codenormal:`- 'MySQL row '`
+    | :codenormal:`...`
+    | :codenormal:`# Observe the result. It contains "MySQL row".`
+    | :codenormal:`# So this is the row that was inserted into the MySQL database.`
+    | :codenormal:`# And now it's been selected with the Tarantool client.`
 
 ===========================================================
                   PostgreSQL Example
@@ -175,9 +174,7 @@ This example assumes that a recent version of PostgreSQL has been installed.
 The PostgreSQL library and include files are also necessary. On Ubuntu they
 can be installed with
 
-.. code-block:: bash
-
-    $ sudo apt-get install libpq-dev
+    | :codebold:`$ sudo apt-get install libpq-dev`
 
 If that works, then cmake will find the necessary files without requiring any
 special user input. However, because not all platforms are alike, for this
@@ -189,108 +186,106 @@ The example was run on a Linux machine where the base directory had a copy of
 the Tarantool source on ~/tarantool, and a copy of PostgreSQL on /usr. The
 postgres server is already running on the local host 127.0.0.1.
 
-::
-
-    # Check that the include subdirectory exists
-    # by looking for /usr/include/postgresql/libpq-fe-h.
-    $ [ -f /usr/include/postgresql/libpq-fe.h ] && echo "OK" || echo "Error"
-    OK
-
-    # Check that the library subdirectory exists and has the necessary .so file.
-    $ [ -f /usr/lib/libpq.so ] && echo "OK" || echo "Error"
-    OK
-
-    # Check that the psql client can connect using some factory defaults:
-    # port = 5432, user = 'postgres', user password = 'postgres', database = 'postgres'.
-    # These can be changed, provided one changes them in all places.
-    # Insert a row in database postgres, and quit.
-    $ psql -h 127.0.0.1 -p 5432 -U postgres -d postgres
-    Password for user postgres:
-    psql (9.3.0, server 9.3.2)
-    SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
-    Type "help" for help.
-
-    postgres=# CREATE TABLE test (s1 INT, s2 VARCHAR(50));
-    CREATE TABLE
-    postgres=# INSERT INTO test VALUES (1,'PostgreSQL row');
-    INSERT 0 1
-    postgres=# \q
-    $
-
-    # Build the Tarantool server. Make certain that "cmake" gets the right
-    # paths for the PostgreSQL include directory and the PostgreSQL libpq
-    # library which were checked earlier.
-    $ cd ~/tarantool
-    $ make clean
-    $ rm CMakeCache.txt
-    $ cmake . -DWITH_POSTGRESQL=on -DPostgreSQL_LIBRARY=/usr/lib/libpq.so\
-    >  -DPostgreSQL_INCLUDE_DIR=/usr/include/postgresql
-    ...
-    -- Found PostgreSQL: /usr/lib/libpq.so (found version "9.3.2")
-    ...
-    -- Configuring done
-    -- Generating done
-    -- Build files have been written to: ~/tarantool
-    $ make
-    ...
-    [ 79%] Building CXX object src/plugin/pg/CMakeFiles/pg.dir/pg.cc.o
-    Linking CXX shared library libpg.so
-    [ 79%] Built target pg
-    ...
-    [100%] Built target man
-    $
-
-    # Change directory to a directory which can be used for temporary tests.
-    # For this example we assume that the name of this directory is
-    # /home/pgulutzan/tarantool_sandbox. (Change "/home/pgulutzan" to whatever
-    # is the actual base directory for the machine that's used for this test.)
-    # Now, to help tarantool find the essential mysql.so file, execute these lines:
-    cd /home/pgulutzan/tarantool_sandbox
-    mkdir box
-    mkdir box/net
-    cp ~/tarantool/src/module/pg/pg.so ./box/net/pg.so
-
-    # Start the Tarantool server. Do not use a Lua initialization file.
-
-    $ ~/tarantool/src/tarantool
-    ~/tarantool/src/tarantool: version 1.6.3-439-g7e1011b
-    type 'help' for interactive help
-    tarantool>   box.cfg{}
-
-    # Enter the following lines on the prompt (again, change "/home/pgulutzan"
-    # to whatever the real directory is that contains tarantool):
-    package.path = "/home/pgulutzan/tarantool/src/module/sql/?.lua;"..package.path
-    require("sql")
-    if type(box.net.sql) ~= "table" then error("net.sql load failed") end
-    require("box.net.pg")
-    # ... Make sure that tarantool replies "true" for the calls to "require()".
-
-    # Create a Lua function that will connect to the PostgreSQL server,
-    # retrieve one row, and display the row.
-    # For explanations of the statement types used here, read the
-    # Lua tutorial in the Tarantool user manual.
-    tarantool> console = require('console'); console.delimiter('!')
-    tarantool> function postgresql_select ()
-            ->   local dbh = box.net.sql.connect(
-            ->       'pg', '127.0.0.1', 5432, 'postgres', 'postgres', 'postgres')
-            ->   local test = dbh:select('SELECT * FROM test WHERE s1 = 1')
-            ->   local row = ''
-            ->   for i, card in pairs(test) do
-            ->     row = row .. card.s2 .. ' '
-            ->     end
-             >   return row
-            ->   end!
-    ---
-    ...
-    tarantool> console.delimiter('')!
-    tarantool>
-
-    # Execute the Lua function.
-    tarantool> postgresql_select()
-    ---
-    - 'PostgreSQL row '
-    ...
-
-    # Observe the result. It contains "PostgreSQL row".
-    # So this is the row that was inserted into the PostgreSQL database.
-    # And now it's been selected with the Tarantool client.
+    | :codenormal:`# Check that the include subdirectory exists`
+    | :codenormal:`# by looking for /usr/include/postgresql/libpq-fe-h.`
+    | :codenormal:`$` :codebold:`[ -f /usr/include/postgresql/libpq-fe.h ] && echo "OK" || echo "Error"`
+    | :codenormal:`OK`
+    |
+    | :codenormal:`# Check that the library subdirectory exists and has the necessary .so file.`
+    | :codenormal:`$` :codebold:`[ -f /usr/lib/libpq.so ] && echo "OK" || echo "Error"`
+    | :codenormal:`OK`
+    |
+    | :codenormal:`# Check that the psql client can connect using some factory defaults:`
+    | :codenormal:`# port = 5432, user = 'postgres', user password = 'postgres', database = 'postgres'.`
+    | :codenormal:`# These can be changed, provided one changes them in all places.`
+    | :codenormal:`# Insert a row in database postgres, and quit.`
+    | :codenormal:`$` :codebold:`psql -h 127.0.0.1 -p 5432 -U postgres -d postgres`
+    | :codenormal:`Password for user postgres:`
+    | :codenormal:`psql (9.3.0, server 9.3.2)`
+    | :codenormal:`SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)`
+    | :codenormal:`Type "help" for help.`
+    |
+    | :codenormal:`postgres=#` :codebold:`CREATE TABLE test (s1 INT, s2 VARCHAR(50));`
+    | :codenormal:`CREATE TABLE`
+    | :codenormal:`postgres=#` :codebold:`INSERT INTO test VALUES (1,'PostgreSQL row');`
+    | :codenormal:`INSERT 0 1`
+    | :codenormal:`postgres=#` :codebold:`\\q`
+    | :codenormal:`$`
+    |
+    | :codenormal:`# Build the Tarantool server. Make certain that "cmake" gets the right`
+    | :codenormal:`# paths for the PostgreSQL include directory and the PostgreSQL libpq`
+    | :codenormal:`# library which were checked earlier.`
+    | :codenormal:`$` :codebold:`cd ~/tarantool`
+    | :codenormal:`$` :codebold:`make clean`
+    | :codenormal:`$` :codebold:`rm CMakeCache.txt`
+    | :codenormal:`$` :codebold:`cmake . -DWITH_POSTGRESQL=on -DPostgreSQL_LIBRARY=/usr/lib/libpq.so\\`
+    | :codenormal:`>` |nbsp| :codebold:`-DPostgreSQL_INCLUDE_DIR=/usr/include/postgresql`
+    | :codenormal:`...`
+    | :codenormal:`-- Found PostgreSQL: /usr/lib/libpq.so (found version "9.3.2")`
+    | :codenormal:`...`
+    | :codenormal:`-- Configuring done`
+    | :codenormal:`-- Generating done`
+    | :codenormal:`-- Build files have been written to: ~/tarantool`
+    | :codenormal:`$` :codebold:`make`
+    | :codenormal:`...`
+    | :codenormal:`[ 79%] Building CXX object src/plugin/pg/CMakeFiles/pg.dir/pg.cc.o`
+    | :codenormal:`Linking CXX shared library libpg.so`
+    | :codenormal:`[ 79%] Built target pg`
+    | :codenormal:`...`
+    | :codenormal:`[100%] Built target man`
+    | :codenormal:`$`
+    |
+    | :codenormal:`# Change directory to a directory which can be used for temporary tests.`
+    | :codenormal:`# For this example we assume that the name of this directory is`
+    | :codenormal:`# /home/pgulutzan/tarantool_sandbox. (Change "/home/pgulutzan" to whatever`
+    | :codenormal:`# is the actual base directory for the machine that's used for this test.)`
+    | :codenormal:`# Now, to help tarantool find the essential mysql.so file, execute these lines:`
+    | :codebold:`cd /home/pgulutzan/tarantool_sandbox`
+    | :codebold:`mkdir box`
+    | :codebold:`mkdir box/net`
+    | :codebold:`cp ~/tarantool/src/module/pg/pg.so ./box/net/pg.so`
+    |
+    | :codenormal:`# Start the Tarantool server. Do not use a Lua initialization file.`
+    |
+    | :codenormal:`$` :codebold:`~/tarantool/src/tarantool`
+    | :codenormal:`~/tarantool/src/tarantool: version 1.6.3-439-g7e1011b`
+    | :codenormal:`type 'help' for interactive help`
+    | :codenormal:`tarantool>` :codebold:`box.cfg{}`
+    |
+    | :codenormal:`# Enter the following lines on the prompt (again, change "/home/pgulutzan"`
+    | :codenormal:`# to whatever the real directory is that contains tarantool):`
+    | :codenormal:`package.path = "/home/pgulutzan/tarantool/src/module/sql/?.lua;"..package.path`
+    | :codenormal:`require("sql")`
+    | :codenormal:`if type(box.net.sql) ~= "table" then error("net.sql load failed") end`
+    | :codenormal:`require("box.net.pg")`
+    | :codenormal:`# ... Make sure that tarantool replies "true" for the calls to "require()".`
+    |
+    | :codenormal:`# Create a Lua function that will connect to the PostgreSQL server,`
+    | :codenormal:`# retrieve one row, and display the row.`
+    | :codenormal:`# For explanations of the statement types used here, read the`
+    | :codenormal:`# Lua tutorial in the Tarantool user manual.`
+    | :codenormal:`tarantool>` :codebold:`console = require('console'); console.delimiter('!')`
+    | :codenormal:`tarantool>` :codebold:`function postgresql_select ()`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| :codebold:`local dbh = box.net.sql.connect(`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| |nbsp| |nbsp| :codebold:`'pg', '127.0.0.1', 5432, 'postgres', 'postgres', 'postgres')`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| :codebold:`local test = dbh:select('SELECT * FROM test WHERE s1 = 1')`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| :codebold:`local row = ''`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| :codebold:`for i, card in pairs(test) do`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| |nbsp| |nbsp| :codebold:`row = row .. card.s2 .. ' '`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| |nbsp| |nbsp| :codebold:`end`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| :codebold:`return row`
+    | |nbsp| |nbsp| |nbsp| |nbsp| |nbsp| :codenormal:`->` |nbsp| |nbsp| :codebold:`end!`
+    | :codenormal:`---`
+    | :codenormal:`...`
+    | :codenormal:`tarantool>` :codebold:`console.delimiter('')!`
+    | :codenormal:`tarantool>`
+    |
+    | :codenormal:`# Execute the Lua function.`
+    | :codenormal:`tarantool>` :codebold:`postgresql_select()`
+    | :codenormal:`---`
+    | :codenormal:`- 'PostgreSQL row '`
+    | :codenormal:`...`
+    |
+    | :codenormal:`# Observe the result. It contains "PostgreSQL row".`
+    | :codenormal:`# So this is the row that was inserted into the PostgreSQL database.`
+    | :codenormal:`# And now it's been selected with the Tarantool client.`
diff --git a/doc/sphinx/book/box/net_box.rst b/doc/sphinx/book/box/net_box.rst
index b1d4873d6f6c9bccae57cf923d45ca9c73df8e6d..78176aefdec49005629c53115d4f9d0cd38c15eb 100644
--- a/doc/sphinx/book/box/net_box.rst
+++ b/doc/sphinx/book/box/net_box.rst
@@ -1,3 +1,5 @@
+.. _package_net_box:
+
 -----------------------------------------------------------------------------------------
                             Package `net.box` -- working with networked Tarantool peers
 -----------------------------------------------------------------------------------------
diff --git a/doc/sphinx/book/box/triggers.rst b/doc/sphinx/book/box/triggers.rst
index 8ccc3cba121a7f52561ed70283e83ffa1f40220d..d00b628b8869ae6b5cec13128554a2e12936b0e2 100644
--- a/doc/sphinx/book/box/triggers.rst
+++ b/doc/sphinx/book/box/triggers.rst
@@ -5,7 +5,7 @@
 -------------------------------------------------------------------------------
 
 Triggers, also known as callbacks, are functions which the server executes when
-certain events happen. Currently the two types of triggers are `connection triggers`_,
+certain events happen. Currently the main types of triggers are `connection triggers`_,
 which are executed when a session begins or ends, and `replace triggers`_ which are
 for database events,
 
@@ -13,12 +13,12 @@ All triggers have the following characteristics.
 
 * They associate a `function` with an `event`. The request to "define a trigger"
   consists of passing the name of the trigger's function to one of the
-  "on_`event-name` ..." functions: ``on_connect()``, ``on_disconnect()``,
-  or ``on_replace()``.
+  ":samp:`on_{event-name}()`" functions: :code:`on_connect()`, :code:`on_auth()`,
+  :code:`on_disconnect()`, or :code:`on_replace()`.
 * They are `defined by any user`. There are no privilege requirements for defining
   triggers.
 * They are called `after` the event. They are not called if the event ends
-  prematurely due to an error.
+  prematurely due to an error. (Exception: :code:`on_auth()` is called before the event.)
 * They are in `server memory`. They are not stored in the database. Triggers
   disappear when the server is shut down. If there is a requirement to make
   them permanent, then the function definitions and trigger settings should
@@ -109,6 +109,34 @@ Here is what might appear in the log file in a typical installation:
     2014-12-15 13:22:19.289 [11360] main/103/iproto I>
         Disconnection. user=guest id=3
 
+===========================================================
+                    Authentication triggers
+===========================================================
+
+.. function:: box.session.on_auth(trigger-function [, old-trigger-function-name])
+
+    Define a trigger for execution during authentication.
+    The on_auth trigger function is invoked after the on_connect trigger function,
+    if and only if the connection has succeeded so far.
+    For this purpose, connection and authentication are considered to be separate steps.
+
+    Unlike other trigger types, on_auth trigger functions are invoked `before`
+    the event. Therefore a trigger function like ":code:`function auth_function () v = box.session.user(); end`"
+    will set :code:`v` to "guest", the user name before the authentication is done.
+    To get the user name after the authentication is done, use the special syntax:
+    ":code:`function auth_function (user_name) v = user_name; end`"
+
+    If the trigger fails by raising an
+    error, the error is sent to the client and the connection is closed.
+
+    :param function trigger-function: function which will become the trigger function
+    :param function old-trigger-function: existing trigger function which will be replaced by trigger-function
+    :return: nil
+
+    If the parameters are (nil, old-trigger-function), then the old trigger is deleted.
+
+    Example: :codenormal:`function f () x = x + 1 end; box.session.on_auth(f)`
+
 
 ===========================================================
                     Replace triggers
diff --git a/doc/sphinx/book/user_guide_getting_started.rst b/doc/sphinx/book/user_guide_getting_started.rst
new file mode 100644
index 0000000000000000000000000000000000000000..cc9e12261728fccd22be3f08e4048408a6e25134
--- /dev/null
+++ b/doc/sphinx/book/user_guide_getting_started.rst
@@ -0,0 +1,177 @@
+-------------------------------------------------------------------------------
+                        Getting started
+-------------------------------------------------------------------------------
+
+
+If the installation has already been done, then you should try it out. So we've
+provided some instructions that you can use to make a temporary “sandbox”. In a
+few minutes you can start the server and type in some database-manipulation
+statements. The section about sandbox is “`Starting Tarantool and making your first database`_”.
+
+.. _first database:
+
+=====================================================================
+        Starting Tarantool and making your first database
+=====================================================================
+
+Here is how to create a simple test database after installing.
+
+Create a new directory. It's just for tests, you can delete it when the tests are over.
+
+ | :codebold:`mkdir` :codebolditalic:`~/tarantool_sandbox`
+ | :codebold:`cd` :codebolditalic:`~/tarantool_sandbox`
+
+Start the server. The server name is tarantool.
+
+ | :codebold:`#if you downloaded a binary with apt-get or yum, say this:`
+ | :codebold:`/usr/bin/tarantool`
+ | :codebold:`#if you downloaded and untarred a binary tarball to ~/tarantool, say this:`
+ | :codebold:`~/tarantool/bin/tarantool`
+ | :codebold:`#if you built from a source download, say this:`
+ | :codebold:`~/tarantool/src/tarantool`
+
+The server starts in interactive mode and outputs a command prompt.
+To turn on the database, :mod:`configure <box.cfg>` it:
+:codenormal:`tarantool>` :codebold:`box.cfg{listen=3301}`
+(this minimal example is sufficient).
+
+If all goes well, you will see the server displaying progress as it
+initializes, something like this:
+
+ | :codenormal:`tarantool> box.cfg{listen=3301}`
+ | :codenormal:`2014-08-07 09:41:41.077 ... version 1.6.3-439-g7e1011b`
+ | :codenormal:`2014-08-07 09:41:41.077 ... log level 5`
+ | :codenormal:`2014-08-07 09:41:41.078 ... mapping 1073741824 bytes for a shared arena...`
+ | :codenormal:`2014-08-07 09:41:41.079 ... initialized`
+ | :codenormal:`2014-08-07 09:41:41.081 ... initializing an empty data directory`
+ | :codenormal:`2014-08-07 09:41:41.095 ... creating './00000000000000000000.snap.inprogress'`
+ | :codenormal:`2014-08-07 09:41:41.095 ... saving snapshot './00000000000000000000.snap.inprogress'`
+ | :codenormal:`2014-08-07 09:41:41.127 ... done`
+ | :codenormal:`2014-08-07 09:41:41.128 ... primary: bound to 0.0.0.0:3301`
+ | :codenormal:`2014-08-07 09:41:41.128 ... ready to accept requests`
+
+Now that the server is up, you could start up a different shell
+and connect to its primary port with |br|
+:codebold:`telnet 0 3301` |br|
+but for example purposes it is simpler to just leave the server
+running in "interactive mode". On production machines the
+interactive mode is just for administrators, but because it's
+convenient for learning it will be used for most examples in
+this manual. Tarantool is waiting for the user to type instructions.
+
+To create the first space and the first :ref:`index <box.index>`, try this:
+
+ | :codenormal:`tarantool>` :codebold:`s = box.schema.space.create('tester')`
+ | :codenormal:`tarantool>` :codebold:`i = s:create_index('primary', {type = 'hash', parts = {1, 'NUM'}})`
+
+To insert three “tuples” (our name for “records”) into the first “space” of the database try this:
+
+ | :codenormal:`tarantool>` :codebold:`t = s:insert({1})`
+ | :codenormal:`tarantool>` :codebold:`t = s:insert({2, 'Music'})`
+ | :codenormal:`tarantool>` :codebold:`t = s:insert({3, 'Length', 93})`
+
+To select a tuple from the first space of the database, using the first defined key, try this:
+
+ | :codenormal:`tarantool>` :codebold:`s:select{3}`
+
+Your terminal screen should now look like this:
+
+ | :codenormal:`tarantool> s = box.schema.space.create('tester')`
+ | :codenormal:`2014-06-10 12:04:18.158 ... creating './00000000000000000002.xlog.inprogress'`
+ | :codenormal:`---`
+ | :codenormal:`...`
+ | :codenormal:`tarantool> s:create_index('primary', {type = 'hash', parts = {1, 'NUM'}})`
+ | :codenormal:`---`
+ | :codenormal:`...`
+ | :codenormal:`tarantool> t = s:insert{1}`
+ | :codenormal:`---`
+ | :codenormal:`...`
+ | :codenormal:`tarantool> t = s:insert{2, 'Music'}`
+ | :codenormal:`---`
+ | :codenormal:`...`
+ | :codenormal:`tarantool> t = s:insert{3, 'Length', 93}`
+ | :codenormal:`---`
+ | :codenormal:`...`
+ | :codenormal:`tarantool> s:select{3}`
+ | :codenormal:`---`
+ | :codenormal:`- - [3, 'Length', 93]`
+ | :codenormal:`...`
+ |
+ | :codenormal:`tarantool>`
+
+Now, to prepare for the example in the next section, try this:
+
+ | :codenormal:`tarantool>` :codebold:`box.schema.user.grant('guest','read,write,execute','universe')`
+
+.. _tarantool.org/dist/stable: http://tarantool.org/dist/stable
+.. _tarantool.org/dist/master: http://tarantool.org/dist/master
+
+
+=====================================================================
+        Starting another Tarantool instance and connecting remotely
+=====================================================================
+
+In the previous section the first request was with "box.cfg{listen=3301}".
+The "listen" value can be any form of URI (uniform resource identifier);
+in this case it's just a local port: port 3301.
+It's possible to send requests to the listen URI via (a) telnet,
+(b) a connector (which will be the subject of Chapter 8),
+or (c) another instance of Tarantool. Let's try (c).
+
+Switch to another terminal.
+On Linux, for example, this means starting another instance of a Bash shell.
+There is no need to use cd to switch to the :codenormal:`~/tarantool_sandbox` directory.
+
+Start the second instance of Tarantool. The server name is tarantool.
+
+  | :codebold:`#if you downloaded a binary with apt-get or yum, say this:`
+  | :codebold:`/usr/bin/tarantool`
+  | :codebold:`#if you downloaded and untarred a binary tarball to ~/tarantool, say this:`
+  | :codebold:`~/tarantool/bin/tarantool`
+  | :codebold:`#if you built from a source download, say this:`
+  | :codebold:`~/tarantool/src/tarantool`
+
+Try these requests:
+
+  | :codebold:`console = require('console')`
+  | :codebold:`console.connect('localhost:3301')`
+  | :codebold:`box.space.tester:select{2}`
+
+The requests are saying "use the :ref:`console package <package-console>`
+to connect to the Tarantool server that's listening
+on localhost:3301, send a request to that server,
+and display the result." The result in this case is
+one of the tuples that was inserted earlier.
+Your terminal screen should now look like this:
+
+ | :codenormal:`...`
+ |
+ | :codenormal:`tarantool> console = require('console')`
+ | :codenormal:`---`
+ | :codenormal:`...`
+ |
+ | :codenormal:`tarantool> console.connect('localhost:3301')`
+ | :codenormal:`2014-08-31 12:46:54.650 [32628] main/101/interactive I> connected to localhost:3301`
+ | :codenormal:`---`
+ | :codenormal:`...`
+ |
+ | :codenormal:`localhost:3301> box.space.tester:select{2}`
+ | :codenormal:`---`
+ | :codenormal:`- - [2, 'Music']`
+ | :codenormal:`...`
+ |
+ | :codenormal:`localhost:3301>`
+
+You can repeat box.space...:insert{} and box.space...:select{}
+indefinitely, on either Tarantool instance.
+When the testing is over: To drop the space: :codenormal:`s:drop()`.
+To stop tarantool: :codenormal:`Ctrl+C`. To stop tarantool (an alternative):
+:codenormal:`os.exit()`. To stop tarantool (from another terminal):
+:codebold:`sudo pkill -f` :codebolditalic:`tarantool`.
+To destroy the test: :codebold:`rm -r` :codebolditalic:`~/tarantool_sandbox`.
+
+To review ... If you followed all the instructions
+in this chapter, then so far you have: installed Tarantool
+from either a binary or a source repository,
+started up the Tarantool server, inserted and selected tuples.
+
diff --git a/doc/sphinx/dev_guide/building_from_source.rst b/doc/sphinx/dev_guide/building_from_source.rst
index 556dadce7c011f76429abdf3d8a9d689276dd136..b5e8f612c862e4c56ca2180f69992c81f8199196 100644
--- a/doc/sphinx/dev_guide/building_from_source.rst
+++ b/doc/sphinx/dev_guide/building_from_source.rst
@@ -16,7 +16,7 @@ explain what the steps are, then on the Internet you can look at some example sc
      end in `-src.tar.gz`), the latest complete source downloads are on github.com, and
      from github one gets with git.
 
-   * A C/C++ compiler. |br| Ordinarily the compiler is ``GCC`` version 4.6 or later, on
+   * A C/C++ compiler. |br| Ordinarily the compiler is `gcc` and ``g++`` version 4.6 or later, on
      Mac OS X it should be ``Clang`` version 3.2 or later.
 
    * A program for managing the build process. |br| This is always ``CMake``
@@ -25,33 +25,20 @@ explain what the steps are, then on the Internet you can look at some example sc
    Here are names of tools and libraries which may have to be installed in advance,
    using ``sudo apt-get`` (for Ubuntu), ``sudo yum install`` (for CentOS), or the
    equivalent on other platforms. Different platforms may use slightly different
-   names. Do not worry about the ones marked `optional, for build with -DENABLE_DOC`
-   unless you intend to work on the documentation.
+   names. Do not worry about the ones marked `optional, only in Mac OS scripts`
+   unless your platform is Mac OS.
 
-   * **binutils-dev** or **binutils-devel**   # contains GNU BFD for printing stack traces
-   * **gcc or clang**                         # see above
+   * **gcc and g++, or clang**                # see above
    * **git**                                  # see above
    * **cmake**                                # see above
-   * **libreadline-dev**                      # for interactive mode
-   * **libncurses5-dev** or **ncurses-devel** # see above
-   * **xsltproc**                             # optional, for build with -DENABLE_DOC
-   * **lynx**                                 # optional, for build with -DENABLE_DOC
-   * **jing**                                 # optional, for build with -DENABLE_DOC
-   * **libxml2-utils**                        # optional, for build with -DENABLE_DOC
-   * **docbook5-xml**                         # optional, for build with -DENABLE_DOC
-   * **docbook-xsl-ns**                       # optional, for build with -DENABLE_DOC
-   * **w3c-sgml-lib**                         # optional, for build with -DENABLE_DOC
-   * **libsaxon-java**                        # optional, for build with -DENABLE_DOC
-   * **libxml-commons-resolver1.1-java**      # optional, for build with -DENABLE_DOC
-   * **libxerces2-java**                      # optional, for build with -DENABLE_DOC
-   * **libxslthl-java**                       # optional, for build with -DENABLE_DOC
-   * **autoconf**                             # optional, appears only in Mac OS scripts
-   * **zlib1g** or **zlib**                   # optional, appears only in Mac OS scripts
+   * **libreadline-dev or libreadline6-dev**  # for interactive mode
+   * **autoconf**                             # optional, only in Mac OS scripts
+   * **zlib1g** or **zlib**                   # optional, only in Mac OS scripts
 
 2. Set up python modules for running the test suite or creating documentation.
    This step is optional. Python modules are not necessary for building Tarantool
-   itself, unless one intends to use the ``-DENABLE_DOC`` option in step 6 or the
-   "Run the test suite" option in step 8. Say:
+   itself, unless one intends to use the ``-DENABLE_DOC`` option in step 5 or the
+   "Run the test suite" option in step 7. Say:
 
    .. code-block:: bash
 
@@ -64,19 +51,21 @@ explain what the steps are, then on the Internet you can look at some example sc
 
    .. code-block:: bash
 
+     # For both test suite and documentation
+     sudo apt-get install python-pip python-dev python-yaml
      # For test suite
-     sudo apt-get install python-daemon python-yaml python-argparse
+     sudo apt-get install python-daemon
      # For documentation
-     sudo apt-get install python-jinja2 python-markdown
-
+     sudo apt-get install python-sphinx python-pelican python-beautifulsoup
 
    On CentOS too you can get modules from the repository:
 
    .. code-block:: bash
 
-     sudo yum install python26 python26-PyYAML python26-argparse
+     sudo yum install python26 python26-PyYAML etc.
 
-   But in general it is best to set up the modules by getting a tarball and
+   If modules are not available on a repository,
+   it is best to set up the modules by getting a tarball and
    doing the setup with ``python setup.py``, thus:
 
    .. code-block:: bash
@@ -100,20 +89,6 @@ explain what the steps are, then on the Internet you can look at some example sc
      cd python-daemon-1.5.5
      sudo python setup.py install
 
-     # python module for text-to-html conversion (markdown):
-     # For documentation: (If wget fails, check the
-     # http://pypi.python.org/pypi/Markdown/
-     # to see what the current version is.)
-     cd ~
-     wget https://pypi.python.org/packages/source/M/Markdown/Markdown-2.3.1.tar.gz
-     tar -xzvf Markdown-2.3.1.tar.gz
-     cd Markdown-2.3.1
-     sudo python setup.py install
-
-     # python module which includes Jinja2 template engine:
-     # For documentation:
-     sudo pip install pelican
-
      # python module for HTML scraping: For documentation:
      cd ~
      wget http://www.crummy.com/software/BeautifulSoup/bs3/download//3.x/BeautifulSoup-3.2.1.tar.gz
@@ -121,7 +96,26 @@ explain what the steps are, then on the Internet you can look at some example sc
      cd BeautifulSoup-3.2.1
      sudo python setup.py install
 
-5. Use ``git`` again so that third-party contributions will be seen as well.
+   Finally, use Python :code:`pip` to bring in Python packages
+   that may not be up-to-date in the distro repositories.
+
+   .. code-block:: bash
+
+     # For test suite
+     pip install tarantool\>0.4 --user
+     # For documentation
+     sudo pip install pelican
+     sudo pip install -U sphinx
+
+3. Use :code:`git` to download the latest source code from the
+   Tarantool 1.6 master branch on github.com.
+
+   .. code-block:: bash
+
+     cd ~
+     git clone https://github.com/tarantool/tarantool.git ~/tarantool
+
+4. Use ``git`` again so that third-party contributions will be seen as well.
    This step is only necessary once, the first time you do a download. There
    is an alternative -- say ``git clone --recursive`` in step 3 -- but we
    prefer this method because it works with older versions of ``git``.
@@ -136,7 +130,7 @@ explain what the steps are, then on the Internet you can look at some example sc
    On rare occasions, the submodules will need to be updated again with the
    command: ``git submodule update --init --recursive``.
 
-6. Use CMake to initiate the build.
+5. Use CMake to initiate the build.
 
    .. code-block: bash
 
@@ -145,19 +139,27 @@ explain what the steps are, then on the Internet you can look at some example sc
      rm CMakeCache.txt  # unnecessary, added for good luck
      cmake .            # Start build with build type=Debug, no doc
 
-   The option for specifying build type is ``-DCMAKE_BUILD_TYPE=<type>`` where
-   ``type = <None | Debug | Release | RelWithDebInfo | MinSizeRel>`` and a
+   On some platforms it may be necessary to specify the C and C++ versions,
+   for example
+
+   .. code-block: bash
+
+     CC=gcc-4.8 CXX=g++-4.8 cmake .
+
+   The option for specifying build type is :samp:`-DCMAKE_BUILD_TYPE={type}` where
+   :samp:`{type} = None | Debug | Release | RelWithDebInfo | MinSizeRel` and a
    reasonable choice for production is ``-DCMAKE_BUILD_TYPE=RelWithDebInfo``
    (``Debug`` is used only by project maintainers and ``Release`` is used only
    when the highest performance is required).
 
-   The option for asking to build documentation is ``-DENABLE_DOC=<true|false>``
-   and the assumption is that only a minority will need to rebuild the
-   documentation (such as what you're reading now), so details about
-   documentation are in the developer manual, and the reasonable choice
+   The option for asking to build documentation is ``-DENABLE_DOC=true|false`,
+   which outputs HTML documentation (such as what you're reading now) to the
+   subdirectory doc/www/output/doc. Tarantool uses the Sphinx simplified markup system.
+   Since most users do not need to rebuild the documentation,
+   the reasonable option
    is ``-DENABLE_DOC=false`` or just don't use the ``-DENABLE_DOC`` clause at all.
 
-7. Use make to complete the build.
+6. Use make to complete the build.
 
    .. code-block:: bash
 
@@ -165,7 +167,7 @@ explain what the steps are, then on the Internet you can look at some example sc
 
    It's possible to say ``make install`` too, but that's not generally done.
 
-8. Run the test suite. This step is optional. |br| Tarantool's developers always
+7. Run the test suite. This step is optional. |br| Tarantool's developers always
    run the test suite before they publish new versions. You should run the test
    suite too, if you make any changes in the code. Assuming you downloaded to
    ``~/tarantool``, the principal steps are:
@@ -208,10 +210,9 @@ explain what the steps are, then on the Internet you can look at some example sc
      rmdir ~/tarantool/bin
 
 
-9. Make an rpm. |br| This step is optional. It's only for people who want to
+8. Make an rpm. |br| This step is optional. It's only for people who want to
    redistribute Tarantool. Package maintainers who want to build with rpmbuild
-   should consult the
-   :doc:`Tarantool Developer Guide <index>`
+   should consult the rpm-build instructions for the appropriate platform.
 
 This is the end of the list of steps to take for source downloads.
 
@@ -229,49 +230,5 @@ For your added convenience, github.com has README files with example scripts:
 These example scripts assume that the intent is to download from the master
 branch, build the server (but not the documentation), and run tests after build.
 
-To build with SUSE 13.1, the steps are as described above, except that the
-appropriate YaST2 package names are: binutils-devel, cmake, ncurses-devel,
-lynx, jing, libxml2-devel, docbook_5, saxon, libxslt-devel. |br|
 The python connector can be installed with ``sudo easy_install pip`` and ``sudo pip install tarantool``.
 
-===========================================================
-                How to build the XML manual
-===========================================================
-
-To build XML manual, you'll need:
-
-* xsltproc
-* docbook5-xml
-* docbook-xsl-ns
-* w3c-sgml-lib
-* libsaxon-java (for saxon processing)
-* libxml-commons-resolver1.1-java
-* libxml2-utils
-* libxerces2-java
-* libxslthl-java
-* lynx
-* jing
-
-When all pre-requisites are met, you should run:
-
-.. code-block:: bash
-
-    $ cmake . -DENABLE_DOC=YES
-
-to enable documentation builder.
-
-If you want to make tarantool user guide, you should run the
-following command from tarantool root directory:
-
-.. code-block:: bash
-
-    $ make html
-
-or
-
-.. code-block:: bash
-
-    $ cd doc/user
-    $ make
-
-The html version of the user guide will be generated in doc/www/content/doc
diff --git a/doc/sphinx/getting_started.rst b/doc/sphinx/getting_started.rst
index 736e7696cc0cf99f6ff863bf8bf2a85687848591..e36f84a6353fd66dfc16c137de8c35e77ee48850 100644
--- a/doc/sphinx/getting_started.rst
+++ b/doc/sphinx/getting_started.rst
@@ -197,7 +197,7 @@ and make install.
 
 .. _tarantool.org/dist/master/tarantool.rb: http://tarantool.org/dist/master/tarantool.rb
 
-.. _first database:
+.. _dup first database:
 
 =====================================================================
         Starting Tarantool and making your first database
diff --git a/doc/sphinx/reference/expirationd.rst b/doc/sphinx/reference/expirationd.rst
index ed7fde470557e01cbe9375b3c3418c5cd9d97f34..ac40eaf86f0784fa27dc5397663ff1ad3d2e1e5f 100644
--- a/doc/sphinx/reference/expirationd.rst
+++ b/doc/sphinx/reference/expirationd.rst
@@ -68,7 +68,7 @@ For those who like to see things run, here are the exact steps to get
 expirationd through the test.
 
 1. Get ``expirationd.lua``. There are standard ways - it is after all part
-   of a standard rock - but for this purpose just copy the contents of
+   of a `standard rock <https://luarocks.org/modules/rtsisyk/expirationd>`_  - but for this purpose just copy the contents of
    expirationd.lua_ to a default directory.
 2. Start the Tarantool server as described before.
 3. Execute these requests:
diff --git a/doc/sphinx/reference/fiber.rst b/doc/sphinx/reference/fiber.rst
index c35668e36346627e3f0b729ad771b3ba85aa61ec..6f0c2723ef9fe9901b1e8d4faba05fa8c0e829f8 100644
--- a/doc/sphinx/reference/fiber.rst
+++ b/doc/sphinx/reference/fiber.rst
@@ -83,7 +83,7 @@ can be reused when another fiber is created.
 
     Return information about all fibers.
 
-    :return: the name, id, and backtrace of all fibers.
+    :return: the name, id, available memory, used memory, and backtrace of all fibers.
     :rtype: table
 
 .. function:: kill(id)
diff --git a/doc/sphinx/reference/socket.rst b/doc/sphinx/reference/socket.rst
index 3ab7d3671b148e23327c8b17c0c2f244c5c5c7a2..d6ae0dbcec7f8762c81323047ad48545fbd67033 100644
--- a/doc/sphinx/reference/socket.rst
+++ b/doc/sphinx/reference/socket.rst
@@ -88,7 +88,7 @@ the function invocations will look like ``sock:function_name(...)``.
 .. function:: __call(domain, type, protocol)
 
     Create a new TCP or UDP socket. The argument values
-    are the same as in the `Linux man page <http://man7.org/linux/man-pages/man2/socket.2.html>`_.
+    are the same as in the `Linux socket(2) man page <http://man7.org/linux/man-pages/man2/socket.2.html>`_.
 
     :param domain:
     :param type:
@@ -151,7 +151,7 @@ the function invocations will look like ``sock:function_name(...)``.
     .. method:: sysconnect(host, port)
 
         Connect a socket to a remote host. The argument values are the same as
-        in the Linux man page [1]_.
+        in the `Linux connect(2) man page <http://man7.org/linux/man-pages/man2/connect.2.html>`_.
         The host must be an IP address.
 
         Parameters:
@@ -333,7 +333,7 @@ the function invocations will look like ``sock:function_name(...)``.
     .. method:: setsockopt(level, name, value)
 
         Set socket flags. The argument values are the same as in the
-        Linux man page [2]_.
+        `Linux getsockopt(2) man page <http://man7.org/linux/man-pages/man2/setsockopt.2.html>`_.
         The ones that Tarantool accepts are:
 
             * SO_ACCEPTCONN
@@ -372,7 +372,7 @@ the function invocations will look like ``sock:function_name(...)``.
     .. method:: linger([active])
 
         Set or clear the SO_LINGER flag. For a description of the flag, see
-        Linux man page [3]_.
+        the `Linux man page <http://man7.org/linux/man-pages/man1/loginctl.1.html>`_.
 
         :param boolean active:
 
@@ -561,7 +561,4 @@ The strings "A", "B", "C" are printed.
 
 .. _luasocket: https://github.com/diegonehab/luasocket
 
-.. [1] http://man7.org/linux/man-pages/man2/connect.2.html
-.. [2] http://man7.org/linux/man-pages/man2/setsockopt.2.html
-.. [3] http://man7.org/linux/man-pages/man1/loginctl.1.html