diff --git a/README.md b/README.md
index 3b38ae5c476bf7e1631d07d141560f8639c0eaf5..6aa35aab72ddb52b26940d6193a66883359e481e 100644
--- a/README.md
+++ b/README.md
@@ -71,36 +71,38 @@ the Iris development itself.
 
 ## Directory Structure
 
-* The folder [algebra](theories/algebra) contains the COFE and CMRA
+* The folder [prelude](iris/prelude) contains modules imported everywhere in
+  Iris.
+* The folder [algebra](iris/algebra) contains the COFE and CMRA
   constructions as well as the solver for recursive domain equations.
-* The folder [base_logic](theories/base_logic) defines the Iris base logic and
+* The folder [base_logic](iris/base_logic) defines the Iris base logic and
   the primitive connectives.  It also contains derived constructions that are
   entirely independent of the choice of resources.
-  * The subfolder [lib](theories/base_logic/lib) contains some generally useful
+  * The subfolder [lib](iris/base_logic/lib) contains some generally useful
     derived constructions.  Most importantly, it defines composable
     dynamic resources and ownership of them; the other constructions depend
     on this setup.
-* The folder [program_logic](theories/program_logic) specializes the base logic
+* The folder [program_logic](iris/program_logic) specializes the base logic
   to build Iris, the program logic.   This includes weakest preconditions that
   are defined for any language satisfying some generic axioms, and some derived
   constructions that work for any such language.
-* The folder [bi](theories/bi) contains the BI++ laws, as well as derived
+* The folder [bi](iris/bi) contains the BI++ laws, as well as derived
   connectives, laws and constructions that are applicable for general BIS.
-* The folder [proofmode](theories/proofmode) contains
+* The folder [proofmode](iris/proofmode) contains
   [MoSeL](http://iris-project.org/mosel/), which extends Coq with contexts for
   intuitionistic and spatial BI++ assertions. It also contains tactics for
   interactive proofs. Documentation can be found in
   [proof_mode.md](docs/proof_mode.md).
-* The folder [heap_lang](theories/heap_lang) defines the ML-like concurrent heap
+* The folder [heap_lang](iris_heap_lang) defines the ML-like concurrent heap
   language
-  * The subfolder [lib](theories/heap_lang/lib) contains a few derived
+  * The subfolder [lib](iris_heap_lang/lib) contains a few derived
     constructions within this language, e.g., parallel composition.
     For more examples of using Iris and heap_lang, have a look at the
     [Iris Examples](https://gitlab.mpi-sws.org/iris/examples).
-* The folder [tests](theories/tests) contains modules we use to test our
+* The folder [tests](tests) contains modules we use to test our
   infrastructure. Users of the Iris Coq library should *not* depend on these
   modules; they may change or disappear without any notice.
-* The folder [si_logic](theories/si_logic) defines a "plain" step-indexed logic
+* The folder [si_logic](iris/si_logic) defines a "plain" step-indexed logic
   and shows that it is an instance of the BI interface.
 
 ## Case Studies
diff --git a/docs/equalities_and_entailments.md b/docs/equalities_and_entailments.md
index 255e7e8614fe7576b9aa907bcd33ce293155ab4b..39c4fc76606bf4bf6a0e2417969fa8681788b2ea 100644
--- a/docs/equalities_and_entailments.md
+++ b/docs/equalities_and_entailments.md
@@ -71,7 +71,7 @@ possible as it requires the caller to specifically package up function and proof
 When an OFE structure on a function type is required but the domain is discrete,
 one can use the type `A -d> B`.  This has the advantage of not bundling any
 proofs, i.e., this is notation for a plain Coq function type. See the
-`discrete_fun` documentation in [`iris.algebra.ofe`](../theories/algebra/ofe.v)
+`discrete_fun` documentation in [`iris.algebra.ofe`](../iris/algebra/ofe.v)
 for further details.
 
 In both OFE function spaces (`A -n> B` and `A -d> B`), setoid equality is
diff --git a/docs/resource_algebras.md b/docs/resource_algebras.md
index ca3638f6f85149aba7fdbaa084bbe43e5dfe8574..ce80628b549f0093d4eb67846acc457fc8e2fd49 100644
--- a/docs/resource_algebras.md
+++ b/docs/resource_algebras.md
@@ -123,9 +123,9 @@ Class gen_heapG (L V : Type) (Σ : gFunctors) `{Countable L} := {
 
 Such modules always need some kind of "initialization" to create an instance
 of their type class.  For example, the initialization for `heapG` is happening
-as part of [`heap_adequacy`](theories/heap_lang/adequacy.v); this in turn uses
+as part of [`heap_adequacy`](iris_heap_lang/adequacy.v); this in turn uses
 the initialization lemma for `gen_heapG` from
-[`gen_heap_init`](theories/base_logic/lib/gen_heap.v):
+[`gen_heap_init`](iris/base_logic/lib/gen_heap.v):
 ```coq
 Lemma gen_heap_init `{gen_heapPreG L V Σ} σ :
   (|==> ∃ _ : gen_heapG L V Σ, gen_heap_ctx σ)%I.
@@ -220,9 +220,9 @@ F (X,X⁻) := gmap K (agree (nat * ▶ X))
 To make it convenient to construct such functors and prove their contractivity,
 we provide a number of abstractions:
 
-- [`cFunctor`](theories/algebra/ofe.v): functors from COFEs to OFEs.
-- [`rFunctor`](theories/algebra/cmra.v): functors from COFEs to cameras.
-- [`urFunctor`](theories/algebra/cmra.v): functors from COFEs to unital
+- [`cFunctor`](iris/algebra/ofe.v): functors from COFEs to OFEs.
+- [`rFunctor`](iris/algebra/cmra.v): functors from COFEs to cameras.
+- [`urFunctor`](iris/algebra/cmra.v): functors from COFEs to unital
   cameras.
 
 Besides, there are the classes `cFunctorContractive`, `rFunctorContractive`, and