diff --git a/.gitmodules b/.gitmodules
index fdb629408a5f6c30be180514c459b42ba2757422..0705e3f49682503bc64771c3768d95969d31ece7 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -16,3 +16,7 @@
 [submodule "third_party/luafun"]
 	path = third_party/luafun
 	url = https://github.com/rtsisyk/luafun.git
+[submodule "sophia"]
+       path = third_party/sophia
+       url = https://github.com/pmwkaa/sophia.git
+       branch = dev
diff --git a/extra/dist/dist.lua b/extra/dist/dist.lua
index d6503063f07304f22a290da8190ce6b04bb11602..533bef8d9d2b3c4755d57fdbcc9ddb85b405928c 100755
--- a/extra/dist/dist.lua
+++ b/extra/dist/dist.lua
@@ -97,7 +97,7 @@ end
 
 local function mkdir(dirname)
     log.info("mkdir %s", dirname)
-    if not fio.mkdir(dirname, 0x1C0) then
+    if not fio.mkdir(dirname, tonumber('0750', 8)) then
         log.error("Can't mkdir %s: %s", dirname, errno.strerror())
         os.exit(-1)
     end
diff --git a/test/app/cfg.result b/test/app/cfg.result
index 400d62d9e2f399faa753abd1f2ca5570ba9ebc81..17f172e65116d1b808545b324c2852e5dffe3dc7 100644
--- a/test/app/cfg.result
+++ b/test/app/cfg.result
@@ -1,2 +1,2 @@
-false	[string "-- load_cfg.lua - internal file..."]:107: Please call box.cfg{} first
+false	[string "-- load_cfg.lua - internal file..."]:105: Please call box.cfg{} first
 true	table
diff --git a/test/app/float_value.result b/test/app/float_value.result
index c2443e8eed7104789083c2d019713797dc847397..a590ec2707af2d28e27b03505d839c13886c13ac 100644
--- a/test/app/float_value.result
+++ b/test/app/float_value.result
@@ -1,26 +1,25 @@
 box.cfg
-1	too_long_threshold:0.01
-2	slab_alloc_factor:2
-3	slab_alloc_minimal:64
-4	background:false
-5	logger:tarantool.log
-6	slab_alloc_arena:0.1
-7	log_level:5
-8	snap_count:6
+1	snapshot_count:6
+2	too_long_threshold:0.01
+3	slab_alloc_factor:2
+4	rows_per_wal:50
+5	background:false
+6	logger:tarantool.log
+7	slab_alloc_arena:0.1
+8	log_level:5
 9	logger_nonblock:true
 10	snap_dir:.
 11	coredump:false
-12	rows_per_wal:50
-13	wal_mode:write
-14	pid_file:box.pid
-15	panic_on_snap_error:true
-16	panic_on_wal_error:false
-17	wal_dir:.
-18	admin:3313
-19	snap_period:14400
-20	readahead:16320
-21	snap_check_period:60
-22	wal_dir_rescan_delay:0.1
+12	wal_mode:write
+13	pid_file:box.pid
+14	panic_on_snap_error:true
+15	panic_on_wal_error:false
+16	readahead:16320
+17	admin:3313
+18	wal_dir:.
+19	snapshot_period:14400
+20	slab_alloc_minimal:64
+21	wal_dir_rescan_delay:0.1
 ------------------------------------------------------
 Check that too_long_threshold = 0.01
 0.01
diff --git a/test/app/init_script.result b/test/app/init_script.result
index 4eadf46cc448ae3dd6b620b8ac1e92ae33781a8a..54e60c1cf385cc8f3fbf63ce550a390baef5c085 100644
--- a/test/app/init_script.result
+++ b/test/app/init_script.result
@@ -3,29 +3,28 @@
 --
 
 box.cfg
-1	pid_file:box.pid
-2	slab_alloc_factor:2
-3	slab_alloc_minimal:64
-4	background:false
-5	logger:tarantool.log
-6	slab_alloc_arena:1
-7	log_level:5
-8	snap_count:6
+1	snapshot_count:6
+2	pid_file:box.pid
+3	slab_alloc_factor:2
+4	slab_alloc_minimal:64
+5	background:false
+6	logger:tarantool.log
+7	slab_alloc_arena:1
+8	log_level:5
 9	listen:3314
 10	logger_nonblock:true
 11	snap_dir:.
 12	coredump:false
-13	too_long_threshold:0.5
-14	wal_mode:write
-15	readahead:16320
-16	panic_on_snap_error:true
-17	panic_on_wal_error:false
-18	rows_per_wal:500000
-19	admin:3313
+13	wal_mode:write
+14	too_long_threshold:0.5
+15	panic_on_snap_error:true
+16	panic_on_wal_error:false
+17	readahead:16320
+18	admin:3313
+19	rows_per_wal:500000
 20	wal_dir:.
-21	snap_period:14400
-22	snap_check_period:60
-23	wal_dir_rescan_delay:0.1
+21	snapshot_period:14400
+22	wal_dir_rescan_delay:0.1
 --
 -- Test insert from detached fiber
 --
diff --git a/test/box/admin.result b/test/box/admin.result
index 09305d48b421cfa6269ff56c8c0175e3dafc0590..b6f0ca7529b7bbb64c390326dd7c35c59a37477e 100644
--- a/test/box/admin.result
+++ b/test/box/admin.result
@@ -18,26 +18,25 @@ help()
 ...
 box.cfg
 ---
-- too_long_threshold: 0.5
+- snapshot_count: 6
+  too_long_threshold: 0.5
   slab_alloc_factor: 2
   slab_alloc_minimal: 64
   background: false
   slab_alloc_arena: 0.1
   log_level: 5
-  snap_count: 6
   listen: <uri>
   logger_nonblock: true
   snap_dir: .
   coredump: false
   wal_mode: write
-  pid_file: tarantool.pid
   panic_on_snap_error: true
   panic_on_wal_error: false
-  rows_per_wal: 50
-  wal_dir: .
-  snap_period: 14400
+  pid_file: tarantool.pid
   readahead: 16320
-  snap_check_period: 60
+  wal_dir: .
+  snapshot_period: 14400
+  rows_per_wal: 50
   wal_dir_rescan_delay: 0.1
 ...
 space:insert{1, 'tuple'}
diff --git a/test/box/cfg.result b/test/box/cfg.result
index 5ff6c55a92c39c3955378fad0cef36835f08cec5..d5f4fefb435ad7fc83ce544d6320c4eec0e2bf8d 100644
--- a/test/box/cfg.result
+++ b/test/box/cfg.result
@@ -2,7 +2,7 @@
 --# push filter 'admin: .*' to 'admin: <uri>'
 box.cfg.nosuchoption = 1
 ---
-- error: '[string "-- load_cfg.lua - internal file..."]:134: Attempt to modify a read-only
+- error: '[string "-- load_cfg.lua - internal file..."]:132: Attempt to modify a read-only
     table'
 ...
 t = {} for k,v in pairs(box.cfg) do if type(v) ~= 'table' and type(v) ~= 'function' then table.insert(t, k..': '..tostring(v)) end end
@@ -10,26 +10,25 @@ t = {} for k,v in pairs(box.cfg) do if type(v) ~= 'table' and type(v) ~= 'functi
 ...
 t
 ---
-- - 'too_long_threshold: 0.5'
+- - 'snapshot_count: 6'
+  - 'too_long_threshold: 0.5'
   - 'slab_alloc_factor: 2'
   - 'slab_alloc_minimal: 64'
   - 'background: false'
   - 'slab_alloc_arena: 0.1'
   - 'log_level: 5'
-  - 'snap_count: 6'
   - 'primary: <uri>
   - 'logger_nonblock: true'
   - 'snap_dir: .'
   - 'coredump: false'
   - 'wal_mode: write'
-  - 'pid_file: tarantool.pid'
   - 'panic_on_snap_error: true'
   - 'panic_on_wal_error: false'
-  - 'rows_per_wal: 50'
-  - 'wal_dir: .'
-  - 'snap_period: 14400'
+  - 'pid_file: tarantool.pid'
   - 'readahead: 16320'
-  - 'snap_check_period: 60'
+  - 'wal_dir: .'
+  - 'snapshot_period: 14400'
+  - 'rows_per_wal: 50'
   - 'wal_dir_rescan_delay: 0.1'
 ...
 -- must be read-only
@@ -41,26 +40,25 @@ t = {} for k,v in pairs(box.cfg) do if type(v) ~= 'table' and type(v) ~= 'functi
 ...
 t
 ---
-- - 'too_long_threshold: 0.5'
+- - 'snapshot_count: 6'
+  - 'too_long_threshold: 0.5'
   - 'slab_alloc_factor: 2'
   - 'slab_alloc_minimal: 64'
   - 'background: false'
   - 'slab_alloc_arena: 0.1'
   - 'log_level: 5'
-  - 'snap_count: 6'
   - 'primary: <uri>
   - 'logger_nonblock: true'
   - 'snap_dir: .'
   - 'coredump: false'
   - 'wal_mode: write'
-  - 'pid_file: tarantool.pid'
   - 'panic_on_snap_error: true'
   - 'panic_on_wal_error: false'
-  - 'rows_per_wal: 50'
-  - 'wal_dir: .'
-  - 'snap_period: 14400'
+  - 'pid_file: tarantool.pid'
   - 'readahead: 16320'
-  - 'snap_check_period: 60'
+  - 'wal_dir: .'
+  - 'snapshot_period: 14400'
+  - 'rows_per_wal: 50'
   - 'wal_dir_rescan_delay: 0.1'
 ...
 --# clear filter
diff --git a/test/box/misc.result b/test/box/misc.result
index 8a7216e4d844afda0e79c86b7d66c0e6486087bc..59d1a1f60e010132f48ee7731552a3e2b23ba1fc 100644
--- a/test/box/misc.result
+++ b/test/box/misc.result
@@ -22,11 +22,11 @@ t
   - error
   - index
   - info
+  - internal
   - rollback
   - schema
   - session
   - slab
-  - snap_daemon
   - snapshot
   - space
   - stat