diff --git a/TODO b/TODO
new file mode 100644
index 0000000000000000000000000000000000000000..deaa46f844bbe5464b15b6d3b39b24b5a36262f7
--- /dev/null
+++ b/TODO
@@ -0,0 +1,56 @@
+# Bugs
+
+* ProjectedBlockGSStep does nothing for a whole block if there are
+  zero diagonal entries in the diagonal block.
+  One would expect that it solves the system for the reduced
+  block containing the block rows with nonzero diagonal entry
+  in this case.
+* MultigridStep is not robust wrt setup order.
+
+
+
+# Performance issues
+
+* BlockGSStep and the derived classes loop over each row twice.
+  Once for computing the residual, once for finding the diagonal entry.
+  This could be done in one loop.
+* The ProjectedBlockGSStep 'solves' the local obstacle problems
+  by a local projected GS with a fixed number of 20 iteration steps.
+  For scalar valued problems one would be enough. Even for vector valued
+  problems one might still be OK but much cheaper. (Does this have any
+  performance impact on linear elasticity problems?)
+
+
+
+# Design issues
+
+* Implement (P)CG as IterationStep for the LoopSolver
+* Make all public member variables protected and introduce public methods for access.
+* Use references instead of pointers as member function arguments.
+* Move stuff done in MultigridStep::setNumberOfLevels() into preprocess().
+* Make handling solution vector in IterationStep consistent:
+  Either provide a const reference, store a copy and give (reference)
+  access to this copy using getSol() or provide a (nonsonst) reference,
+  store the solution there and make getSol() return this reference
+  and no copy.
+  (C: I'd prefer the latter to reduce the number of vector copies).
+* Make setting up a MultigridStep easier. E.g. by providing a default
+  version that is preconfigured with GS smoother and coarse grid solver.
+* Remove MultigridStep::setNumberOfLevels(), this number is already
+  fixed by the size of the transfer operator vector.
+  
+
+
+# Naming of classes and members
+
+* ignoreNodes_ should be called ignore_/ignoreIndices_/ignoreComponents_
+
+
+
+# Missing features
+
+* Transfer operator assembler for adaptively refined grids (without refinementtype=copy)
+  This is already implemented in dune-fufem. It could be moved here if the
+  dependency on P1NodalBasis is removed.
+* Nested iteration for ObstacleTNNMGStep.
+