Closes #3879, #3880, #3881, #3882, #3883, #3884, #3885, #3886. Signed-off-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>