diff --git a/README.md b/README.md
index d2e5022..8b03f0f 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,39 @@
 # AbstractImageReconstruction
 
 [![Build Status](https://github.com/JuliaImageRecon/AbstractImageReconstruction.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/JuliaImageRecon/AbstractImageReconstruction.jl/actions/workflows/CI.yml?query=branch%3Amain)
+
+This package contains an interface and type hierarchy for image reconstruction algorithms and their parameters, together with associated utiltiy tools.
+
+## Installation
+
+Within Julia, use the package manager:
+```julia
+using Pkg
+Pkg.add("AbstractImageReconstruction")
+```
+AbstractImageReconstruction is not intended to be used alone, but together with an image reconstruction package that implements the provided interface, such as [MPIReco.jl](https://github.com/MagneticParticleImaging/MPIReco.jl)
+
+## Usage
+Concrete construction of reconstruction algorithms depend on the implementation of the reconstruction package. Once an algorithms is constructed with the given paramters, images can be reconstructed as follows:
+```julia
+using AbstractImageReconstruction, MPIReco
+
+params = ... # Setup reconstruction paramter
+algo = ... # Setup chosen algorithm with params
+raw = ... # Setup raw data
+
+image = reconstruct(algo, raw)
+```
+Once an algorithm is constructed it can be transformed into a `RecoPlan`. These are mutable and transparent wrappers around the nested types of the algorithm and its paramters, that can be stored and restored to and from TOML files.
+
+```julia
+plan = toPlan(algo)
+savePlan(MPIReco, "Example", plan)
+plan = loadPlan(MPIReco, "Example", [MPIReco, RegularizedLeastSquares, MPIFiles])
+
+algo2 = build(plan)
+algo == algo2 # true
+```
+Unlike concrete algorithm instances, a `RecoPlan` may still be missing certain values of its fields and it can encode the structure of an image reconstruction algorithm without concrete parameterization.
+
+It is also possible to attach `Listeners` to `RecoPlan` fields, that call user-specified functions if they are changed. This allows specific `RecoPlans` to provide smart default paramter choices or embedding a plan into a GUI.
\ No newline at end of file