diff --git a/README b/README
index 31f5d5db104a04710aac3d832251e336db863467..2385fbf351c917a7aed1d4331f3625f84e07b9eb 100644
--- a/README
+++ b/README
@@ -84,8 +84,8 @@ Features
 
 What works:
 * Scripts can be parsed, the grammar is fully supported. 
-* Script validation (contextual analysis) works almost completely. Outgoing mail 
-  addresses are not verified yet as required. 
+* Script validation (contextual analysis) works almost completely. However, 
+  outgoing mail addresses are not verified yet as required. 
 * Script code generation works for all core commands. Comparators, match-types 
   and address-part modifiers work as required.
 * Interpreter runs core commands and tests. Comparators, match-types and 
@@ -95,6 +95,10 @@ What works:
   Duplicate actions can be avoided and conflicts can be detected. 
 * Execution of the result is supported for all core action commands and all
   fully implemented extensions (see list below).  
+* Compiled binary code can be saved to and loaded back from disk. The binary 
+  is structured as a set of data blocks, which can contain extension-dependent
+  extra data. For example, the include extension uses this to store the 
+  compiled included scripts (no external inclusion of binaries supported yet).
 * This sieve implementation is now available as an alternative plugin to  
   dovecot's deliver. It is not completely useful yet, but hopefully this will 
   soon be able to replace the current cmusieve implementation.
@@ -133,14 +137,14 @@ Extensions and their implementation status:
     include: full, but needs much more work
     vacation: almost complete, but no support for required References header
     imapflags: flag management works, but flags are not stored 
-    variables: skeleton
+    variables: very basic support
 
     notify: planned, first mailto only (- very low priority)
 
 All implemented extensions are like the engine itself currently very much 
-experimental. Other extensions will be added as soon as the necessary 
-infrastructure is available. Extensions supported by cmu-sieve have priority, 
-although variables might be implemented somewhere in between. 
+experimental. A status of 'full' does not mean that the extension is bug-free 
+and RFC-compliant. Other extensions will be added as soon as the necessary 
+infrastructure is available. Extensions supported by cmu-sieve have priority.
 
 Design
 ------
@@ -186,15 +190,23 @@ CODE-DUMPER: sieve-code-dumper.c
   code-dumper. It's implementation is similar to the interpreter, with the 
   exception that it performs no actions and just sequentially wanders through 
   the byte code printing instructions along the way. The term human-readable is 
-  a bit optimistic though; currently the presented data looks like an assembly
+  a bit optimistic though; currently, the presented data looks like an assembly
   language. 
 
 TODO
 ----
 
 Current:
-* Implement variables extension.
-
+* Implement variables extension
+  Implemented:
+  -> Core variables substitution works
+  Remaining: 
+  -> Accept namespaces
+  -> Recognize match variables
+  -> Provide appropriate errors on various mishandled occasions
+  -> Provide support for include, imapflags and other extensions that (partly)
+     depend on variables support.
+     
 Next (in order of descending priority/precedence):
 * Finish implementing all extensions supported by cmusieve, except notify.
 * Limit the maximum number of errors.