diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 707e415..0d8e3e5 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -25,8 +25,9 @@
 ## Testing changes
 
 Typical users of the Vanadium for Java libraries will use a dependency manager
-such as Maven or Gradle to bring Vanadium into their projects. For example, in
-an Android project, the user may do something like:
+such as Maven or Gradle to bring Vanadium into their projects. 
+
+For example, in an Android project, the user may do something like:
 
 ```groovy
 // MyAndroidProject/app/build.gradle
@@ -44,49 +45,94 @@
 }
 ```
 
-In this example, using Gradle to build the application will cause a binary JAR
-version of Vanadium for Android to be downloaded from a Maven repository on the
-Internet (in this case, the JCenter repository). While this is very convenient
-for the end user, it is not so convenient to the Vanadium contributor who wishes
-to test some changes without making a full release.
+Using Gradle to build the application will cause a binary JAR version of
+Vanadium for Android to be downloaded from a Maven repository on the
+Internet (in this case, the JCenter repository).
 
-To get around this, we make use of the fact that Maven can be configured to use
-a repository on the local filesystem. Gradle gives us convenient access to this
-repository under the `mavenLocal` moniker. In order to publish to the local
-Maven repository, you will:
+While this is very convenient for the end user, it is not so convenient to the
+Vanadium contributor who wishes to test changes without making a full
+release.
 
-1. change `lib/build.gradle`, set `releaseVersion` to something that is not in
-   use (e.g. '9.9')
-2. in the Java root directory, run `./gradlew :lib:clean
-   :lib:publishToMavenLocal`
-3. if you wish to test changes to the Vanadium for Android library, repeat the
-   above steps for the `android-lib` project (i.e. change
-   `android-lib/build.gradle` and run `./gradlew :android-lib:clean
-   :android-lib:publishToMavenLocal`). Ensure that the `releaseVersion`
-   variables in the two `build.gradle` files are the same.
+To be able to incorporate local changes to underlying libraries, we
+make use of the fact that Maven can be configured to use a repository
+on the local filesystem.
+[Gradle configuration](http://developer.android.com/tools/building/configuring-gradle.html)
+gives us convenient access to this repository under the `mavenLocal`
+moniker.
 
-Now that the library is published, you can modify the example Android app's
-`build.gradle` as follows:
+The following instructions do that, and assume you work from the Java
+root directory, e.g.
 
-```groovy
-// MyAndroidProject/app/build.gradle
-
-apply plugin: 'com.android.application'
-
-// ...
-
-repositories {
-    mavenLocal()  // <-- This must come first, repositories are searched
-                  // in the order they appear in this file.
-    jCenter()
-}
-
-dependencies {
-    compile 'io.v:vanadium-android:9.9'  // Set this to the releaseVersion
-                                         // you chose above.
-}
+```
+cd ~/vanadium/release/java
 ```
 
-Importantly, you can re-run step 2 above as many times as you like without
-having to choose a new `releaseVersion`.
+#### Modify Go library construction
+
+Edit
+
+```
+lib/build.gradle
+```
+
+Set `releaseVersion` to a new unused value, e.g. `9.9`.
+
+
+#### Modify android library construction
+
+Edit
+
+```
+android-lib/build.gradle
+```
+
+ 1. Set `releaseVersion` to the same value used above.
+ 2. Add `mavenLocal()` before `jCenter()` in the `buildscript` stanzas.
+
+
+#### Modify project construction
+
+Edit
+
+```
+${yourProject}/build.gradle   # project level
+```
+
+Add `mavenLocal()` _before_ `jCenter()` in the
+`allprojects/repositories` stanza.
+
+
+#### Modify module construction
+
+Edit
+
+```
+${yourProject}/app/build.gradle   # module level
+```
+
+Change the `dependencies` stanza to specify your new version number, e.g.
+
+```
+compile 'io.v:vanadium-android:9.9'
+```
+
+#### Purge caches
+
+```
+./gradlew :lib:clean :android-lib:clean
+```
+
+#### Deploy locally
+
+```
+./gradlew :lib:publishToMavenLocal :android-lib:publishToMavenLocal
+```
+
+You can now build your project against local
+upstrean changes, e.g.
+
+```
+(cd ${yourProject}; ./gradlew assembleDebug)
+```
+
 
