diff --git a/fs-succinct/Makefile b/fs-succinct/Makefile
index 5db87b33f1bc49531f4c7fbe39c04c7107350e4c..33dc94d5bc23aedff1319f6331e34ac3ecd4ef80 100644
--- a/fs-succinct/Makefile
+++ b/fs-succinct/Makefile
@@ -1,5 +1,5 @@
 TOP=..
-PICS=sole sole_boxes sole_hilevel
+PICS=sole sole_boxes sole_hilevel mixer
 
 
 include ../Makerules
diff --git a/fs-succinct/mixer.asy b/fs-succinct/mixer.asy
new file mode 100644
index 0000000000000000000000000000000000000000..2b1ac4aeb515b6c7b6a7511394906c39e6a108a2
--- /dev/null
+++ b/fs-succinct/mixer.asy
@@ -0,0 +1,15 @@
+import succinct_common;
+
+real r = 1.5;
+real dist=2;
+mixer(0,0,r);
+draw((-dist,0)--(-r,0), e_arrow);
+draw((r,0)--(dist,0), e_arrow);
+draw((0,-r)--(0,-dist), e_arrow);
+draw((0,dist)--(0,r), e_arrow);
+
+label((0, dist), "\vbox{\hbox{$x\in[X]$}\hbox{\eightrm (input)}}", N);
+label((-dist, 0), "\vbox{\hbox{$y\in[Y]$}\hbox{\eightrm (carry in)}}", W);
+label((dist, 0), "\vbox{\hbox{$s\in[S]$}\hbox{\eightrm (carry out)}}", E);
+label((0, -dist), "\vbox{\hbox{$m\in[2^M]$}\hbox{\eightrm (output)}}", S);
+label((0, 0), "$t\in [T]$");
diff --git a/fs-succinct/succinct.tex b/fs-succinct/succinct.tex
index 457cbc7d848156ae846d26eeb1697da421209d3a..28fcda58342b088e87e4db5ffefeab068c10851a 100644
--- a/fs-succinct/succinct.tex
+++ b/fs-succinct/succinct.tex
@@ -141,7 +141,7 @@ the alphabet [88] (by the simple transformation of $8x + y$). We can then split
 that character again into two in a different way. For example into two characters
 from alphabets [9] and [10]. This can be accomplished by simple division with
 remainder: if the original character is $z\in [88]$, we transform in into
-$\lfloor z / 10\rfloor$ and $(z \;{\rm mod}\; 10)$. For example, if we start
+$\lfloor z / 10\rfloor$ and $(z \bmod 10)$. For example, if we start
 with the characters 6 and 5, they first get combined to form $6\cdot 8 + 5 = 53$
 and then split into 5 and 3.
 
@@ -233,4 +233,33 @@ into the output. The final carry is then used to output some extra blocks at the
 
 \subsection{Generalizing the mixer concept}
 
+\figure[mixer]{mixer.pdf}{}{General structure of a mixer}
+
+At a high level, a mixer can be thought of as a mapping $f: [X]\times[Y] \rightarrow [2^M]\times[S]$
+with the property that when $(m,s) = f(x,y)$, $s$ depends only on $x$.
+
+Internally, the a mixer is
+always implemented as a composition of two mappings, $f_1$ that transforms $x \rightarrow (t,s)$ and $f2$
+that transforms $(y,t) \rightarrow m$. See fig. \figref{mixer}. Both $f_1$ and $f_2$ must be injective
+so that the encoding is reversible.
+
+The mappings $f_1$ and $f_2$ themselves are trivial alphabet translations similar to what we
+used in the SOLE encoding. You can for example use $f_1(x) = (\lceil x/S \rceil, x \bmod S)$
+and $f_2(y,t) = t\cdot Y + y$.
+
+Thus implementing the mixer is simple as long as the parameters allow its existence. A mixer
+with parameters $X$, $Y$, $S$, $M$ can exist if and only if there exists $T$ such that
+$S\cdot T \le X$ and $2^M \le T\cdot Y$ (once again, the alphabet translations need their
+range to be as large as their domain in order to work).
+
+\subsection{On the existence of certain kinds of mixers}
+
+Now we would like to show that mixers with certain parameters do exist.
+
+\lemma{For $X,Y \le 2^w$ there exists a mixer $f: [X]\times[Y] \rightarrow [2^M]\times[S]$ such that:
+\tightlist{o}
+\: $S = \O(\sqrt{X})$
+\endlist
+}
+
 \endchapter