diff --git a/README.md b/README.md
index 2d53f128afa56865ba481c71c0a493dca1b484b5..9a14d891a73cfc2f4d8f04a89008ee7986c28fbb 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,18 @@
-This is an attempt to re-structure the ai/noblogs-wp> repository using Composer.
+This is an attempt to re-structure the ai/noblogs-wp> repository using Composer ([e.g](https://www.smashingmagazine.com/2019/03/composer-wordpress/))
 
 Some rough ideas on how the situation could be improved:
 
 - the ```upstream``` branch should disappear. We should not have to care ourselves on keeping a sync of Wordpress source code
 - we should really just keep the patches and our contributions
 - we need to be able to build a docker container in the end
+- How do we generate the patches? We need to keep the source code of wordpress in the git repo after all, to be able to use git diff.
 
-## About drop-in plugins
+## About mu-plugins and drop-in plugins
 
 Drop-in plugins, such as ```Hyperdb```, do not have to be installed in the plugins directory, but we have instead to place files directly into wp-content.
-We have to thus manually specify where they have to go.
+Similarly, mu-plugins are distributed as regular plugins (```wpackagist``` does not have a nice way to select stuff as mu-plugins), but they cannot be dropped in the mu-plugins directory: instead, a single file from their source has to be moved there.
+
+In order to solve this two problems, we install these plugins outside of the ```app``` sub-directory (since we do not need to distribute them in production), and we manually specify which file we need to move where, using ```dropin-paths```.
+
+## Gitlab as Composer registry/repository
+It might happen [soon](https://gitlab.com/gitlab-org/gitlab/-/issues/15886), in Gitlab version 13.1.
diff --git a/composer.json b/composer.json
index 026009891f765950e13814020c4da26377ca769a..f9ab1b73d44ca367411c1466b810cf324056a8f2 100644
--- a/composer.json
+++ b/composer.json
@@ -14,6 +14,10 @@
         {
             "type": "composer",
             "url" : "https://wpackagist.org"
+        },
+        {
+            "type": "vcs",
+            "url": "git@git.autistici.org:lucha/r2db.git"
         }
     ],
     "require": {
@@ -23,24 +27,30 @@
         "koodimonni/composer-dropin-installer": "^1.2",
         "johnpbloch/wordpress": "^5.4",
         "bjornjohansen/wplang": "^0.1.1",  
-        "wpackagist-theme/minimalism": "1.0.3",        
-        "wpackagist-plugin/hyperdb": "^1.6",
-        "wpackagist-plugin/disable-wordpress-updates": "^1.6"
-    },    
+        "wpackagist-theme/minimalism": "1.0.3",
+        "wpackagist-plugin/disable-wordpress-updates": "^1.6",
+        "wpackagist-plugin/hyperdb": "^1.6"
+    },
+    "config": {
+        "vendor-dir": "app/vendor"
+    },
     "extra": {
-        "wordpress-install-dir": "web/wp",
+        "wordpress-install-dir": "app/wp",
         "installer-paths": {
-            "web/vendor/{$name}": ["wpackagist-plugin/hyperdb"],
-            "web/vendor/{$name}/": ["type:wordpress-muplugin"],
-            "web/app/plugins/{$name}/": ["type:wordpress-plugin"],
-            "web/app/themes/{$name}/": ["type:wordpress-theme"]
+            "mu-plugins-src/{$name}": ["wpackagist-plugin/hyperdb", "wpackagist-plugin/disable-wordpress-updates"],
+            "app/content/mu-plugins/{$name}/" : ["type:wordpress-muplugin"],
+            "app/content/plugins/{$name}/": ["type:wordpress-plugin"],
+            "app/content/themes/{$name}/": ["type:wordpress-theme"]
         },
-        "wordpress-language-dir": "web/app/languages",
+        "wordpress-language-dir": "content/languages/",
         "wordpress-languages": [ "en_GB", "it_IT" ],
         "patches-file": "composer.patches.json",        
         "dropin-paths": {
-            "web/app": ["package:wpackagist-plugin/hyperdb:db.php"],
-            "web/app/mu-plugins" : ["package:wpackagist-plugin/disable-wordpress-updates:disable-updates.php"]
+            "app/content/": ["package:wpackagist-plugin/hyperdb:db.php"],
+            "app/content/mu-plugins/" : ["package:wpackagist-plugin/disable-wordpress-updates:disable-updates.php"]
         }
+    },
+    "require-dev": {
+        "lucha/r2db": "dev-master"
     }
 }
diff --git a/composer.lock b/composer.lock
index 07714b152e8ba2d77b8704d8f05a55f0d9733c7f..83ded90d34c737f1fcff22e521072dfb37900e3b 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "d57c53958c37d8c03057c125316c013b",
+    "content-hash": "89537593d5cc46b09253a3c802eec2a3",
     "packages": [
         {
             "name": "bjornjohansen/wplang",
@@ -463,10 +463,96 @@
             "homepage": "https://wordpress.org/themes/minimalism/"
         }
     ],
-    "packages-dev": [],
+    "packages-dev": [
+        {
+            "name": "flexihash/flexihash",
+            "version": "v2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pda/flexihash.git",
+                "reference": "497ba5782606d998f8ab0b4e5942e3a799bec018"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pda/flexihash/zipball/497ba5782606d998f8ab0b4e5942e3a799bec018",
+                "reference": "497ba5782606d998f8ab0b4e5942e3a799bec018",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8",
+                "satooshi/php-coveralls": "~1.0",
+                "squizlabs/php_codesniffer": "^2.3",
+                "symfony/config": "^2.0.0",
+                "symfony/console": "^2.0.0",
+                "symfony/filesystem": "^2.0.0",
+                "symfony/stopwatch": "^2.0.0",
+                "symfony/yaml": "^2.0.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Flexihash\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Paul Annesley",
+                    "email": "paul@annesley.cc",
+                    "homepage": "http://paul.annesley.cc"
+                },
+                {
+                    "name": "Dom Morgan",
+                    "email": "dom@d3r.com",
+                    "homepage": "https://d3r.com"
+                }
+            ],
+            "description": "Flexihash is a small PHP library which implements consistent hashing",
+            "homepage": "https://github.com/pda/flexihash",
+            "time": "2016-04-22T21:03:23+00:00"
+        },
+        {
+            "name": "lucha/r2db",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "git@git.autistici.org:lucha/r2db.git",
+                "reference": "24bf8c45749c08e155dc31dbcd3d070fbc12024f"
+            },
+            "require": {
+                "flexihash/flexihash": "^2.0"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "db-hash.php",
+                    "db-backends.php"
+                ]
+            },
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "lucha",
+                    "email": "lucha@paranoici.org"
+                }
+            ],
+            "description": "r2db wordpress database",
+            "time": "2020-05-23T21:30:55+00:00"
+        }
+    ],
     "aliases": [],
     "minimum-stability": "stable",
-    "stability-flags": [],
+    "stability-flags": {
+        "lucha/r2db": 20
+    },
     "prefer-stable": false,
     "prefer-lowest": false,
     "platform": {