diff --git a/Overall Plan.rst b/Overall Plan.rst
index 29bda08496e02c0c03d538a0d2e5274ecc9e87bd..4da9204cde14931ee850bbb32b6025358aa8472b 100644
--- a/Overall Plan.rst	
+++ b/Overall Plan.rst	
@@ -8,24 +8,12 @@
       #. Set up CI
       #. Implement a Tahoe-LAFS capability parser library in Haskell
 
-   #. Extend Android app to receive and display server configuration
-
-      The deliverable is as above with the following additions.
-      The package provides an application which can receive a configuration blob from a sender (presumably GridSync) and display a structured representation of it.
-
-      #. Finalize device pairing / configuration transfer protocol
-      #. Implement sender in GridSync
-      #. Implement receiver in Haskell
-
-	 #. Haskell magic-wormhole ???
-	 #. QR code reader ???
-
    #. Extend Android app to download and display one hard-coded N=1,k=1 CHK using received "anonymous" (no ZKAPs) server configuration
 
       The deliverable is as above with the following additions.
       The package provides an application which has a CHK capability string hard-coded into it.
       The application can download the associated data from a Tahoe-LAFS server speaking the "anonymous" Great Black Swamp.
-      The Tahoe-LAFS server is located via the device pairing protocol completed above.
+      The Tahoe-LAFS server is located via hard-coded Grid configuration.
       If the associated data is plain text then it can display it in some basic way.
 
       #. Implement Tahoe-LAFS Great Black Swamp (immutables, read-only) Haskell client library
@@ -35,7 +23,7 @@
 
       The deliverable is as above with the following additions.
       The application can download the associated data from N Tahoe-LAFS servers speaking the "anonymous" Great Black Swamp.
-      The Tahoe-LAFS servers is located via the device pairing protocol completed above.
+      The Tahoe-LAFS servers is located via hard-coded Grid configuration.
       The same servers are selected as the Python Tahoe-LAFS implementation would select.
       If the associated data is plain text then it can display it in some basic way.
 
@@ -47,7 +35,7 @@
       The deliverable is as above with the following additions.
       The package provides an application which has an SDMF capability string hard-coded into it.
       The application can download the associated data from a Tahoe-LAFS server speaking the "anonymous" Great Black Swamp.
-      The Tahoe-LAFS server is located via the device pairing protocol completed above.
+      The Tahoe-LAFS server is located via hard-coded configuration.
       If the associated data is plain text then it can display it in some basic way.
 
       #. Implement Tahoe-LAFS Great Black Swamp (mutables, read-only) Haskell client library
@@ -63,7 +51,7 @@
    #. Extend Android app to support ZKAPAuthorizer-enabled servers
 
       The deliverable is as above with the following additions.
-      The configuration received via the device pairing protocol may include storage servers which only speak the ZKAPAuthorizer variation of the storage protocol.
+      The hard-coded Grid configuration may include storage servers which only speak the ZKAPAuthorizer variation of the storage protocol.
       The application can speak to these servers to accomplish all of the above download tasks.
 
       #. Implement ZKAPAuthorizer economic protocol (read-only) for Great Black Swamp Haskell client library
@@ -83,10 +71,43 @@
       #. Finalize GUI design
       #. Integrate Tahoe-LAFS Haskell client libraries with existing Kotlin GUI or new Obelisk-based GUI
 
+   #. Extend Android app to support receiving a read-cap
+
+      The deliverable is as above with the following additions:
+
+      #. Integrate with the Haskell magic-wormhole client
+      #. Use a user-typed code to access a shared magic-wormhole mailbox
+      #. Receive a folder-invite, including a Collective read-only capability
+      #. (optional) allow user to say Y/N to the invite (replying via mailbox as appropriate)
+      #. Store the Collective read-only capability as a folder locally
+
    #. Extend Android app to support browsing magic-folders
 
       The deliverable is as above with the following additions.
-      The magic-folders in the "devicecap" transferred as part of the pairing protocol are enumerated in the GUI.
+      The magic-folders configured locally via the pairing protocol are enumerated in the GUI.
       The directory browsing GUI can be applied to the logical directory hierarchy represented by a magic-folder.
 
       #. Build a "magic-folder lite" Haskell client library
+
+   #. Extend Android app to support QR Codes
+
+      The deliverable is as above with the following additions.
+      The magic-folder pairing protocol is extended to allow reading the wormhole code via QR code
+
+      #. Incorporate a QR Code decoding library
+      #. Set the application up to accept `ps-pair:` URLs
+      #. Parse the code out of such an URL (instead of user typing it in)
+      #. Hard-code all other parameters (AppID, wormhole mailbox address, version, ..)
+
+   #. Extend the Android app to reject improper version negotiation
+
+      The deliverable is after the "support receiving a read-cap" milestone.
+      The magic-wormhole protocol understands the "app-versions" negotiation properly.
+
+      #. Fix the Haskell magic-wormhole library to understand "app-versions" (currently it "parses" them but throws them away / ignores it).
+      #. Fix the pairing protocol to ask for proper "app-versions" from ^
+      #. Fix the pairing protocol to send proper "app-versions" to the peer
+      #. Fail on incorrect or incompatible "app-versions"
+
+      Note that this is "very nice to have" for proper interoperability, but not strictly necessary for a first release.
+      Risk: before this is implemented, any subsequent release of anything in the stack that speaks a newer pairing protocol may break this application.