diff --git a/contib/mittorn/Makefile.linux b/contib/mittorn/Makefile.linux
new file mode 100644
index 00000000..6dc654f1
--- /dev/null
+++ b/contib/mittorn/Makefile.linux
@@ -0,0 +1,206 @@
+#############################################
+# Makefile.linux - linux makefile
+# Copyright (C) 2017 mittorn
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+##############################################
+
+# Default options - optimized to debug on local machine
+CC ?= gcc
+CXX ?= g++
+CFLAGS ?= -g -O1 -fsigned-char -Wall -Wextra -Wsign-compare -Wno-unknown-pragmas -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-variable
+LDFLAGS =
+LBITS := $(shell getconf LONG_BIT)
+DEPS :=
+
+XASH_COMMIT := $(firstword $(shell git rev-parse --short=6 HEAD) unknown)
+
+ifeq ($(XASH_COMMIT),unknown)
+$(warning You seems to build xash3d without git)
+$(warning Please use git if you are going to publish your build)
+endif
+
+# Pass 64BIT=1 to make arguments to allow amd64 builds
+ifneq ($(64BIT),1)
+ ifeq ($(LBITS),64)
+ LDFLAGS += -m32
+ CFLAGS += -m32
+ endif
+endif
+
+TOPDIR = $(PWD)/..
+INCLUDES :=
+XASH_SINGLE_BINARY ?= 1
+INSTALL_DIR ?= ./install/
+ifeq ($(NANOGL),1)
+INCLUDES += -Inanogl -Inanogl/GL
+endif
+INCLUDES += -I/usr/include/SDL2 -Icommon -I../common -I. -I../pm_shared -Iclient -Iserver -Iclient/vgui -Icommon/sdl
+
+#############################
+# Preprocessor defines:
+#############################
+DEFINES =
+
+# Specify commit hash in version string
+DEFINES += -DXASH_BUILD_COMMIT=\"$(XASH_COMMIT)\"
+
+
+# Only SDL backend exists on linux
+ifeq ($(XASH_DEDICATED),1)
+ DEFINES += -DXASH_DEDICATED
+else
+ DEFINES += -DXASH_SDL
+ LIBS += -lSDL2
+endif
+
+#############################################
+# GL/GLES translators.
+# You need clone it to engine folder to use
+# Only one translator should be enabled
+#############################################
+ifeq ($(NANOGL),1)
+DEFINES += -DXASH_NANOGL -D__MULTITEXTURE_SUPPORT__ -DEGL_LIB=\"libEGL.so\"
+endif
+
+ifeq ($(WES),1)
+DEFINES += -DXASH_WES -D__MULTITEXTURE_SUPPORT__ -DEGL_LIB=\"libEGL.so\"
+endif
+
+ifeq ($(REGAL),1)
+DEFINES += -DXASH_REGAL -D__MULTITEXTURE_SUPPORT__ -DEGL_LIB=\"regal/lib/linux-32/libRegal.so\"
+LIBS += regal/lib/linux-32/libRegal.so
+endif
+
+# Some libc implementations cannot use libdl in static builds, so disable it by default
+ifeq ($(XASH_STATIC),1)
+
+ ifneq ($(XASH_STATIC_LIBDL),1)
+ DEFINES += -DNO_LIBDL
+ endif
+
+ XASH_SINGLE_BINARY := 1
+endif
+
+ifneq ($(XASH_STATIC),1)
+ LIBS += -ldl
+endif
+
+ifeq ($(XASH_STATIC_LIBDL),1)
+ LIBS += -ldl
+endif
+
+LIBS += -lm -pthread
+
+
+ifeq ($(XASH_SINGLE_BINARY),1)
+ DEFINES += -DSINGLE_BINARY
+endif
+
+# Collect files
+SRCS_CPP =
+SRCS = $(wildcard server/*.c) $(wildcard client/vgui/*.c) $(wildcard client/avi/*.c) $(wildcard common/*.c) $(wildcard common/imagelib/*.c) $(wildcard common/soundlib/*.c) $(wildcard common/soundlib/libmpg/*.c)
+ifneq ($(XASH_DEDICATED),1)
+ SRCS += $(wildcard client/*.c)
+ SRCS += $(wildcard platform/sdl/*.c)
+ ifeq ($(WES),1)
+ SRCS += $(wildcard gl-wes-v2/src/*.c)
+ endif
+ ifeq ($(NANOGL),1)
+ SRCS_CPP += $(wildcard nanogl/*.cpp)
+ endif
+endif
+OBJS = $(patsubst %.c,obj/%.o,$(SRCS))
+OBJS_CPP = $(patsubst %.cpp,obj/%.o,$(SRCS_CPP))
+
+#################################
+# Windows DLL loader
+# Should be enabled only on i386 builds
+#################################
+LOADER :=
+ifeq ($(XASH_DLL_LOADER),1)
+ DEFINES += -DDLL_LOADER
+ ifeq ($(XASH_SINGLE_BINARY),1)
+ LOADER = libloader.a
+ else
+ LOADER = libloader.so
+ endif
+ DEPS += $(LOADER)
+ LIBS += $(LOADER)
+endif
+
+# Rules for binaries
+ifeq ($(XASH_SINGLE_BINARY),0)
+ BINARIES = libxash.so
+libxash.so : $(OBJS) $(OBJS_CPP) $(DEPS)
+ $(CC) -fvisibility=hidden -o libxash.so $(LDFLAGS) -shared $(OBJS) $(OBJS_CPP) $(LIBS)
+
+else
+BINARIES = xash
+xash: $(OBJS) $(OBJS_CPP) $(DEPS)
+ifeq ($(XASH_STATIC),1)
+ $(CC) -o xash -static $(LDFLAGS) $(OBJS) $(OBJS_CPP) $(LIBS)
+else
+ $(CC) -o xash -fvisibility=hidden $(LDFLAGS) $(OBJS) $(OBJS_CPP) $(LIBS)
+endif
+
+endif
+
+ifeq ($(XASH_DLL_LOADER),1)
+$(LOADER):
+ $(MAKE) -f ../loader/Makefile.linux -C ../loader $(LOADER)
+ cp ../loader/$(LOADER) .
+endif
+
+# Create dirs for object files
+DIRS := obj obj/server obj/client/avi obj/client/vgui obj/common/sdl obj/common/imagelib obj/common/soundlib/libmpg obj/platform/sdl obj/nanogl
+$(OBJS): | $(DIRS)
+
+$(DIRS) :
+ mkdir -p $(DIRS)
+
+# Object rules
+obj/%.o : %.c
+ $(CC) $(CFLAGS) $(INCLUDES) $(DEFINES) -c "$<" -o "$@" -Wno-unused-result -fvisibility=hidden
+
+obj/%.o : %.cpp
+ $(CXX) $(CFLAGS) $(INCLUDES) $(DEFINES) -c "$<" -o "$@"
+
+
+default: $(BINARIES)
+
+.PHONY: depend clean list install
+
+clean:
+ $(RM) $(OBJS) $(OBJS_CPP) $(BINARIES) ../loader/*.o ../loader/*.a ../loader/*.so $(LOADER)
+
+list:
+ @echo Sources:
+ @echo $(SRCS)
+ @echo C++ Sources:
+ @echo $(SRCS_CPP)
+ @echo Objects:
+ @echo $(OBJS) $(OBJS_CPP)
+ @echo Dirs:
+ @echo $(DIRS)
+ @echo Dependencies:
+ @echo $(DEPS)
+
+# Simple install rule
+install: $(BINARIES)
+ mkdir -p $(INSTALL_DIR)
+
+ifeq ($(XASH_SINGLE_BINARY),1)
+ cp xash $(INSTALL_DIR)/xash_bin
+else
+ cp libxash.so $(INSTALL_DIR)/
+ cp libloader.so $(INSTALL_DIR)/
+endif
diff --git a/contib/mittorn/README.md b/contib/mittorn/README.md
new file mode 100644
index 00000000..289e3b11
--- /dev/null
+++ b/contib/mittorn/README.md
@@ -0,0 +1,269 @@
+**Table of Contents** *generated with [DocToc](http://doctoc.herokuapp.com/)*
+
+- [Building](#building)
+ - [Manual build (without CMake)](#manual-build-without-cmake)
+ - [Building Engine](#building-engine)
+ - [Building launch binary](#building-launch-binary)
+ - [Building on Windows](#building-on-windows)
+ - [Visual Studio 2013 (recommended for Windows)](#visual-studio-2013-recommended-for-windows)
+ - [Visual Studio 6](#visual-studio-6)
+ - [MinGW](#mingw)
+ - [Building Game mods](#building-game-mods)
+ - [Linux](#linux)
+ - [microndk](#microndk)
+ - [Makefile.linux](#makefile-linux)
+ - [Windows](#windows)
+- [Running](#running)
+ - [Manual running](#manual-running)
+ - [Running with GDB](#running-with-gdb)
+ - [Using DLL Loader](#using-dll-loader)
+ - [Running MinGW builds](#running-mingw-builds)
+ - [Running MinGW builds under GDB](#running-mingw-builds-under-gdb)
+
+# Building
+
+## Manual build (without CMake)
+
+### Building engine
+
+Clone Xash3D repository using git:
+
+ git clone https://github.com/FWGS/xash3d
+
+Move to the Xash3D folder:
+
+ cd xash3d/engine
+
+ make -f Makefile.linux XASH_VGUI=1
+
+or same for dedicated
+
+ make -f Makefile.linux XASH_DEDICATED=1
+
+To enable dll support on linux, build loader library:
+
+ cd ../loader
+ make -f Makefile.linux libloader.so libloader.a
+ cp libloader.so libloader.a ../engine/
+
+And built engine with XASH_DLL_LOADER=1:
+
+ cd ../engine
+ make -f Makefile.linux XASH_VGUI=1 XASH_SDL=1 XASH_DLL_LOADER=1
+
+or same for dedicated server
+
+ cd ../engine
+ make -f Makefile.linux XASH_DEDICATED=1 XASH_DLL_LOADER=1
+
+### Building engine in separate library
+
+Some old distros does not support hidden symbol visibility
+This results in crash when loading server library
+
+Building launch binary
+
+ cd (xash3d)/game_launch
+ gcc xash.c -o xash -ldl -lrt -lm
+
+Building engine library:
+
+ make -f Makefile.linux XASH_SINGLE_BINARY=0
+
+## Building on Windows
+
+### Visual Studio 2013 (recommended for Windows)
+
+Download latest prebuilt SDL2 from
+
+https://www.libsdl.org/release/SDL2-devel-2.0.4-VC.zip
+
+Unzip and rename `SDL2-2.0.4` folder to `SDL2` and put it next to xash3d project folder.
+
+ ..\xash3d\
+ ..\SDL2\
+
+Open `xash.sln` with Visual Studio 2013 and make a build. After building, copy contents of `Debug` or
+`Release` folder to directory you choose. Copy `valve` folder and `vgui.dll` from your Half Life game
+installation folder and `SDL2.dll` form `\SDL2\lib\x86\` to it.
+Move `vgui_support.dll` into `valve` folder.
+
+ ..\valve\
+ ..\valve\vgui_support.dll
+ ..\menu.dll
+ ..\SDL2.dll
+ ..\vgui.dll
+ ..\xash.dll
+ ..\xash.exe
+
+Now you good to go, just run `xash.exe`.
+
+### Visual Studio 6
+
+This is legacy configuration, but msvc6 seems to generate more stable and more effective code
+
+Setup your msvc6 enviroment, unpack SDL2-2.0.4 to xash3d folder and do:
+
+ cd (xash3d)\engine
+ ..\msvc6\build.bat
+ cd (xash3d)\game_launch
+ ..\msvc6\build_launch.bat
+
+### MinGW
+
+The most effective configuration, but maybe unstable.
+Setup your MinGW environment and run:
+
+ cd (xash3d)\engine\
+ CC=gcc mingw32-make -f Makefile.mingw
+
+ engine will be built to single exe binary
+
+## Building game mods
+
+### Linux
+
+#### microndk
+
+All mods that ported to android may be build to linux using Android.mk with microndk:
+
+[https://github.com/SDLash3D/microndk]
+
+Clone microndk repo somewhere, change xash3d_config to preffered configuration (change arch to x86
+for example)
+
+Go to dlls folder if you are building server or cl_dlls if you are building client and do:
+
+ make -f /path/to/microndk/microndk.mk -j4
+
+Do:
+
+ make -f /path/to/microndk/microndk.mk -j4 clean
+
+every time when you build client after building server
+
+#### Makefile.linux
+
+### Windows
+
+On windows common way is using Visual Studio as many mods does not correctly work with mingw.
+
+Just open project and build it.
+
+Other is using mingw and microndk, but it was not tested yet.
+
+hlsdk-xash3d based mods may work fine with mingw.
+
+You may use microndk to build it. Build process is very similar to linux one.
+
+After setting up MinGW enviroment, do:
+`mingw32-make -f \path\to\microndk\Microndk.mk`
+
+to build 64-bit library, use:
+`mingw32-make -f \path\to\microndk\Microndk.mk 64BIT=1`
+
+Edit xash3d_config.mk to set optimal CFLAGS if you are running server
+
+# Running
+
+Copy **valve** folder from Half-Life:
+
+ cp -r $HOME/.steam/steam/steamapps/common/Half-Life/valve $HOME/Games/Xash3D
+
+**NOTE**: If you build with CMake, you can now use `make install`. It will install binaries where
+they must be located. So just run `xash3d` from command line in directory where is gamedata is located.
+For additional info look to the CMakeLists.txt in repo root and xash3d.sh script.
+
+After a successful build, copy the next files to some other directory where you want to run Xash3D:
+
+ cp engine/libxash.so game_launch/xash3d mainui/libxashmenu.so $HOME/Games/Xash3D
+
+If you built it with XASH_VGUI, also copy vgui.so:
+
+ cp ../hlsdk/linux/vgui.so vgui_support/libvgui_support.so $HOME/Games/Xash3D
+
+Copy script:
+
+ cp ../xash3d.sh $HOME/Games/Xash3D
+
+Run:
+
+ cd $HOME/Games/Xash3D
+ ./xash3d.sh
+
+## Manual running
+
+Put xash3d binaries and vgui(optionally) to you game data directory and run:
+
+ LD_LIBRARY_PATH=. ./xash -dev 5
+
+## Running under GDB
+
+ LD_LIBRARY_PATH=. gdb --args ./xash -dev 5
+
+## Using DLL Loader
+
+Put vgui_support.dll from windows build to your game data folder and run:
+
+ LD_LIBRARY_PATH=. ./xash -dev 5 -vguilib vgui.dll -clientlib valve/cl_dlls/client.dll -dll dlls/hl.dll
+
+## Running MinGW builds
+
+Put exe file to your game data directory
+
+ cd (game)\
+ xash_bin -dev 5
+
+### Running MinGW builds under GDB
+
+ gdb --args ./xash_bin.exe -dev 5
+
+# Useful GDB commands
+
+Start or restart process:
+
+ (gdb) r
+
+Show backtrace:
+
+ (gdb) bt
+
+Full backtrace:
+
+ (gdb) bt full
+
+Continue execution:
+
+ (gdb) c
+
+Recover from segmentation fault:
+
+Skipping function:
+
+ (gdb) handle SIGSEGV nopass
+ (gdb) ret
+ (gdb) c
+
+Restart frame for beginning:
+
+ (gdb) handle SIGSEGV nopass
+ (gdb) jump *Host_AbortCurrentFrame
+Anti-Crash script (useful for scripting servers):
+```
+cd /path/to/rootdir
+file xash
+set args xash -dev 5 -nowcon
+handle SIGSEGV nopass
+catch signal SIGSEGV
+set $crashes=0
+commands
+print $crashes++
+if $crashes > 500
+set $crashes=0
+run
+else
+jump *Host_AbortCurrentFrame
+end
+end
+run
+```
diff --git a/contib/mittorn/setup.sh b/contib/mittorn/setup.sh
new file mode 100755
index 00000000..828976b6
--- /dev/null
+++ b/contib/mittorn/setup.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+SCRIPTDIR=$(dirname "$0")
+TOPDIR=$SCRIPTDIR/../../
+cp $SCRIPTDIR/Makefile.dllloader $TOPDIR/loader/
+cp $SCRIPTDIR/Makefile.emscripten $TOPDIR/engine/
+cp $SCRIPTDIR/Makefile.linux $TOPDIR/engine/
+cp $SCRIPTDIR/wscript $TOPDIR/engine/
\ No newline at end of file
diff --git a/contib/mittorn/wscript b/contib/mittorn/wscript
new file mode 100644
index 00000000..457d2d2c
--- /dev/null
+++ b/contib/mittorn/wscript
@@ -0,0 +1,42 @@
+#! /usr/bin/env python
+# encoding: utf-8
+# mittorn, 2018
+
+VERSION='0.99'
+APPNAME='xash3d-fwgs'
+
+top = '.'
+
+def options(opt):
+ opt.load('compiler_c')
+# opt.load('msvs')
+
+def configure(conf):
+ conf.load('compiler_c')
+ conf.env.append_unique('CFLAGS', '-O2')
+ conf.env.append_unique('DEFINES', 'XASH_SDL')
+ conf.env.append_unique('DEFINES', 'SINGLE_BINARY')
+ conf.env.append_value('LINKFLAGS', '-ldl')
+ conf.env.append_value('LINKFLAGS', '-lm')
+ conf.env.append_value('LINKFLAGS', '-pthread')
+ conf.env.append_value('LINKFLAGS', '-m32')
+ conf.env.append_value('CFLAGS', '-m32')
+ conf.check_cfg(path='sdl2-config', args='--cflags --libs', package='', uselib_store='SDL2')
+
+def build(bld):
+ bld(
+ target = 'xash',
+ features = 'c cprogram',
+ includes = ['../common', '../pm_shared', 'common', 'server', 'client', 'client/vgui', '.' ],
+ source = bld.path.ant_glob([
+ 'common/*.c',
+ 'common/imagelib/*.c',
+ 'common/soundlib/*.c',
+ 'common/soundlib/libmpg/*.c',
+ 'client/*.c',
+ 'client/vgui/*.c',
+ 'client/avi/*.c',
+ 'server/*.c',
+ 'platform/sdl/*.c']),
+ use = ['SDL2', 'm', 'pthread']
+ )