Pretty much done. Reviews required.
Adds text version