diff --git a/Overall Plan.rst b/Overall Plan.rst
new file mode 100644
index 0000000000000000000000000000000000000000..29bda08496e02c0c03d538a0d2e5274ecc9e87bd
--- /dev/null
+++ b/Overall Plan.rst	
@@ -0,0 +1,92 @@
+#. Build the read-only PrivateStorage / magic-folder Android app
+
+   #. Build an Android app that can parse a Tahoe-LAFS capability
+
+      The deliverable is a CI pipeline which produces an Android-installable package.
+      The package provides an application that shows a structured representation of CHK and SDMF capability strings that are hard-coded into the application.
+
+      #. 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.
+      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
+      #. Implement CHK (read-only) Haskell library
+
+   #. Extend Android app to support arbitrary N/k CHK capabilities
+
+      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 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.
+
+      #. Build Tahoe-LAFS server selection algorithm compatibility test suite
+      #. Implement Tahoe-LAFS server selection algorithm in Haskell
+
+   #. Extend Android app to download and display one hard-coded N=1,k=1 SDMF directory using received "anonymous" (no ZKAPs) server configuration
+
+      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.
+      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
+      #. Implement SDMF (read-only) Haskell library
+      #. Implement directory (read-only) Haskell library
+
+   #. Extend Android app to support arbitrary N/k SDMF capabilities
+
+      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.
+      Servers are selected in a manner analogous to that of the arbitrary N/k CHK case.
+
+   #. 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 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
+      #. Deploy Great Black Swamp-enabled Tahoe-LAFS storage servers
+
+	 #. Add support for economic plugins to Tahoe-LAFS Great Black Swamp implementation
+	 #. Port ZKAPAuthorizer economic plugin to Great Black Swamp
+	 #. Release Tahoe-LAFS with the above
+	 #. Update PrivateStorageio with new Tahoe-LAFS release
+
+   #. Extend Android app to support browsing directories
+
+      The deliverable is as above with the following additions.
+      If a CHK or SDMF capability represents a directory object then the directory contents are interpreted and a structured representation of them is displayed in the GUI.
+      If a child of the directory is a directory then the GUI UX can recurse into that child.
+
+      #. Finalize GUI design
+      #. Integrate Tahoe-LAFS Haskell client libraries with existing Kotlin GUI or new Obelisk-based GUI
+
+   #. 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 directory browsing GUI can be applied to the logical directory hierarchy represented by a magic-folder.
+
+      #. Build a "magic-folder lite" Haskell client library