diff --git a/Makefile.am b/Makefile.am
index 95772dfebfbca0eb69e99b0509611df4e53f86be..41ef7069d34142d04fc8fc1203a556f6e9e8df73 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = src data po icons plugins
+SUBDIRS = gajim data po icons plugins
 
 ACLOCAL_AMFLAGS = -I m4
 
diff --git a/autogen.sh b/autogen.sh
index 80ea3525a839dde65a782b6458aee88ca4020a67..72fbe878a12ba2da29d6fef992b5ede1c4700c33 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -6,9 +6,9 @@
   && for p in `ls data/gui/*.ui`; do echo "[type: gettext/glade]$p" >> \
   po/POTFILES.in; done \
   && ls -1 data/org.gajim.Gajim.appdata.xml.in data/org.gajim.Gajim.desktop.in.in data/gajim-remote.desktop.in.in \
-  src/*.py src/common/*.py src/command_system/*.py src/command_system/implementation/*.py src/common/zeroconf/*.py src/plugins/*.py | grep -v ipython_view.py >> \
+  gajim/*.py gajim/common/*.py gajim/command_system/*.py gajim/command_system/implementation/*.py gajim/common/zeroconf/*.py gajim/plugins/*.py | grep -v ipython_view.py >> \
   po/POTFILES.in \
-  && echo -e "data/org.gajim.Gajim.desktop.in\ndata/gajim-remote.desktop.in\nsrc/ipython_view.py" > po/POTFILES.skip  || exit 1
+  && echo -e "data/org.gajim.Gajim.desktop.in\ndata/gajim-remote.desktop.in\ngajim/ipython_view.py" > po/POTFILES.skip  || exit 1
   if [ $(find plugins/ -name '*.py' | wc -l) -gt 0 ];then
     ls -1 plugins/*/*.py plugins/*/*.ui >> po/POTFILES.skip
   fi
diff --git a/configure.ac b/configure.ac
index b7ecb3d27cbf77c46ffbc81a181f866564d0d39e..857357e1a7e28ed2464e1eda2f2fdce98ec063ce 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_INIT([Gajim - A Jabber Instant Messager],
-		m4_esyscmd_s([python -c "import os;os.chdir('src');from common import defs; print(defs.version)"]),[https://dev.gajim.org/gajim/gajim],[gajim])
+		m4_esyscmd_s([python -c "import os;os.chdir('gajim');from common import defs; print(defs.version)"]),[https://dev.gajim.org/gajim/gajim],[gajim])
 AC_PREREQ([2.59])
 
 AC_CONFIG_HEADER(config.h)
@@ -48,7 +48,7 @@ instead of DATADIR/gajim/src.])]
 ,
 AC_SUBST([gajim_srcdir], [\${pkgpythondir}])
 ,
-AC_SUBST([gajim_srcdir], [\${datadir}/\${PACKAGE}/src])
+AC_SUBST([gajim_srcdir], [\${datadir}/\${PACKAGE}/gajim])
 )
 
 AC_SUBST([gajim_pluginsdir], [\${datadir}/\${PACKAGE}/plugins])
@@ -76,7 +76,7 @@ AC_CONFIG_FILES([
 	data/org.gajim.Gajim.desktop.in
 	data/gajim-remote.desktop.in
 	data/defs.py
-	src/Makefile
+	gajim/Makefile
 	scripts/gajim
 	scripts/gajim-remote:scripts/gajim.in
 	scripts/gajim-history-manager:scripts/gajim.in
diff --git a/doc/epydoc.conf b/doc/epydoc.conf
index f58ddfcd4a71ea23876e3828f0d857c589947b21..258c2fc3eb3c9d9eab9d0ddcf368a5e3d1a8dc0a 100644
--- a/doc/epydoc.conf
+++ b/doc/epydoc.conf
@@ -13,7 +13,7 @@ docformat: restructuredtext
 # The list of modules to document.  Modules can be named using
 # dotted names, module filenames, or package directory names.
 # This option may be repeated.
-modules: src/* test/*
+modules: gajim/* test/*
 
 # Write html output to the directory "apidocs"
 #output: pdf
diff --git a/launch.sh b/launch.sh
index ad7265660b9ab413c236b5ebc1b0f5a6efda38ae..b0339c65500b32e57f2864c3299b05da3b7509fb 100755
--- a/launch.sh
+++ b/launch.sh
@@ -2,5 +2,5 @@
 if [ ! $PYTHON ]; then
        PYTHON="python3";
 fi
-cd "$(dirname $0)/src"
+cd "$(dirname $0)/gajim"
 exec $PYTHON -OOt gajim.py "$@"
diff --git a/plugins/dbus_plugin/plugin.py b/plugins/dbus_plugin/plugin.py
index 562c9d69c3e9751da81f928e3ce614fc6d6dea35..1f6001e99e373333b02bcaec9bcde5458e208b0a 100644
--- a/plugins/dbus_plugin/plugin.py
+++ b/plugins/dbus_plugin/plugin.py
@@ -26,7 +26,7 @@
 '''
 D-BUS Support plugin.
 
-Based on src/remote_control.py
+Based on gajim/remote_control.py
 
 :author: Mateusz Biliński <mateusz@bilinski.it>
 :since: 8th August 2008
diff --git a/scripts/dev/run-pylint.py b/scripts/dev/run-pylint.py
index e2d54b14c05fca5f40aa10555eb03a68aeeab23e..1d41139730a1dd59d9bd449659426bee9e4bebda 100755
--- a/scripts/dev/run-pylint.py
+++ b/scripts/dev/run-pylint.py
@@ -5,6 +5,6 @@ import os
 import sys
 
 if os.getcwd().endswith('dev'):
-    os.chdir('../../src/') # we were in scripts/dev
+    os.chdir('../../gajim/') # we were in scripts/dev
 
 os.system("pylint --include-ids=y --additional-builtins='_' --disable-msg=C0103,C0111,W0703,W0511,W0142,W0613,R0201 --disable-checker=design " + "".join(sys.argv[1:]))
diff --git a/test/integration/test_gui_event_integration.py b/test/integration/test_gui_event_integration.py
index 06b8d638e07c72e2defd5793144d98c9170eb775..c0a20142cb5fb6d9905c14dd22823c0ca2f73e25 100644
--- a/test/integration/test_gui_event_integration.py
+++ b/test/integration/test_gui_event_integration.py
@@ -1,5 +1,5 @@
 '''
-Tests for the miscellaneous functions scattered throughout src/gajim.py
+Tests for the miscellaneous functions scattered throughout gajim/gajim.py
 '''
 import unittest
 
diff --git a/test/lib/__init__.py b/test/lib/__init__.py
index e941e220ad338e915709074c3541009dbf15d5e4..803472b1216784f86e765bb8f6ca22acaf5f06af 100644
--- a/test/lib/__init__.py
+++ b/test/lib/__init__.py
@@ -12,9 +12,9 @@ for o, a in opts:
 
 gajim_root = os.path.join(os.path.abspath(os.path.dirname(__file__)), '../..')
 
-# look for modules in the CWD, then gajim/test/lib, then gajim/src,
+# look for modules in the CWD, then gajim/test/lib, then gajim/gajim,
 # then everywhere else
-sys.path.insert(1, gajim_root + '/src')
+sys.path.insert(1, gajim_root + '/gajim')
 sys.path.insert(1, gajim_root + '/test/lib')
 
 # a temporary version of ~/.gajim for testing
diff --git a/test/lib/xmpp_mocks.py b/test/lib/xmpp_mocks.py
index 81ba75d0409c2bd2aa6d818b088c7c23e76d3f7b..6617e27ae602dc36cb0352c470c51e4612c0ef62 100644
--- a/test/lib/xmpp_mocks.py
+++ b/test/lib/xmpp_mocks.py
@@ -57,7 +57,7 @@ class IdleMock:
 
 class MockConnection(IdleMock, Mock):
     '''
-    Class simulating Connection class from src/common/connection.py
+    Class simulating Connection class from gajim/common/connection.py
 
     It is derived from Mock in order to avoid defining all methods
     from real Connection that are called from NBClient or Dispatcher
diff --git a/test/test_pluginmanager.py b/test/test_pluginmanager.py
index acbf2896b30df4056a6f4c829fa3db68ae8be94e..dba5152f3f13c67a5c50ca1ca02aca886bb41c71 100644
--- a/test/test_pluginmanager.py
+++ b/test/test_pluginmanager.py
@@ -30,7 +30,7 @@ import os
 import unittest
 
 gajim_root = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..')
-sys.path.append(gajim_root + '/src')
+sys.path.append(gajim_root + '/gajim')
 
 # a temporary version of ~/.gajim for testing
 configdir = gajim_root + '/test/tmp'
diff --git a/win/misc/create-launcher.py b/win/misc/create-launcher.py
index e625a52952322994f89722ea3490e1c9bdb237cf..83f83c22f95bfdc718be7cd5fb8f29dec2510d83 100644
--- a/win/misc/create-launcher.py
+++ b/win/misc/create-launcher.py
@@ -87,13 +87,13 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
     Py_FrozenFlag = 1;
     Py_Initialize();
     PySys_SetArgvEx(__argc, szArglist, 0);
-    FILE* file = fopen("../gajim/src/%(filename)s", "r");
+    FILE* file = fopen("../gajim/gajim/%(filename)s", "r");
     PyRun_SimpleString("import sys; import os;"
-                       "os.chdir('../gajim/src');"
+                       "os.chdir('../gajim/gajim');"
                        "sys.path.append(os.getcwd());"
                        "sys.frozen=True;"
                         );
-    result = PyRun_SimpleFile(file, "../gajim/src/%(filename)s");
+    result = PyRun_SimpleFile(file, "../gajim/gajim/%(filename)s");
     Py_Finalize();
     return result;
 }