diff --git a/docs/Config.md b/docs/Config.md
index e0a66a0..9fcdb8f 100644
--- a/docs/Config.md
+++ b/docs/Config.md
@@ -25,9 +25,9 @@
 
 On initialization, pass the configuration object, structured like the one above as the second argument to [`MQ.MathField(html_element, config)`](http://mathquill.readthedocs.org/en/latest/Api_Methods/#mqmathfieldhtml_element-config).
 
-To change the options later on, use [`mathField.config(new_config)`](http://mathquill.readthedocs.org/en/latest/Api_Methods/#confignewconfig).
+To change the options later on, use [`mathField.config(new_config)`](http://mathquill.readthedocs.org/en/latest/Api_Methods/#confignew_config).
 
-Global defaults may be set with [`MQ.config(NEW_CONFIG)`](http://mathquill.readthedocs.org/en/latest/Api_Methods/#mqconfig).
+Global defaults may be set with [`MQ.config(NEW_CONFIG)`](http://mathquill.readthedocs.org/en/latest/Api_Methods/#mqconfigconfig).
 
 # Configuration Options
 
@@ -41,7 +41,7 @@
 
 This allows you to change the way the left and right keys move the cursor when there are items of different height, like fractions.
 
-By default, the Left and Right keys move the cursor through all possible cursor positions in a particular order: right into a fraction puts the cursor at the left end of the numerator, right out of the numerator puts the cursor at the left end of the denominator, right out of the denominator puts the cursor to the right of the fraction. Symmetrically, left into a fraction puts the cursor at the right end of the denominator, etc.
+By default, the Left and Right keys move the cursor through all possible cursor positions in a particular order: right into a fraction puts the cursor at the left end of the numerator, right out of the numerator puts the cursor at the left end of the denominator, and right out of the denominator puts the cursor to the right of the fraction. Symmetrically, left into a fraction puts the cursor at the right end of the denominator, etc.
 
 If instead you want right to always visually go right, and left to always go visually left, you can set `leftRightIntoCmdGoes` to `'up'` or `'down'` so that left and right go up or down (respectively) into commands. For example, `'up'` means that left into a fraction goes up into the numerator and right out of the numerator skips the denominator and puts the cursor to the right of the fraction. This behavior can be seen in the [Desmos calculator](https://www.desmos.com/calculator). If this property is set to `'down'` instead, the numerator is harder to navigate to, like in the Mac OS X built-in app Grapher.
 
diff --git a/docs/Contributing.md b/docs/Contributing.md
index 96496e1..f49ed5a 100644
--- a/docs/Contributing.md
+++ b/docs/Contributing.md
@@ -1,12 +1,14 @@
 # Building from Source
 
-Install [Node](http://nodejs.org/#download) if needed. Then run `make`. `make` installs all of the needed dependencies and creates the full build folder.
+Install [Node](http://nodejs.org/#download) if needed. Then run `make`. This installs all of the needed dependencies and creates the full build folder.
 
-For development on MathQuill, run `make dev`. This will skip minifying MathQuill, which can be annoyingly slow.
+For developing on MathQuill, run `make dev`. This will skip minifying MathQuill, which can be annoyingly slow.
 
 ## Building a Smaller MathQuill
 
-`make basic` builds a stripped-down version of MathQuill for basic mathematics, without advanced LaTeX commands. Specifically, it doesn't let you type LaTeX backslash commands with `\` or text blocks with `$`, and also won't render any LaTeX commands that can't by typed without `\`. `mathquill-basic.{js,min.js,css}` and `font/Symbola-basic.{eot,ttf}`; serve and load them instead for a stripped-  down version of MathQuill for basic mathematics, without advanced LaTeX commands. Specifically, it doesn't let you type LaTeX backslash commands with `\` or text blocks with `$`, and also won't render any LaTeX commands that can't by typed without `\`. The resulting JS is only somewhat smaller, but the font is like 100x smaller. (TODO: reduce full MathQuill's font size.)
+`make basic` builds a stripped-down version of MathQuill for basic mathematics, without advanced LaTeX commands. This version doesn't allow typed LaTeX backslash commands with `\` or text blocks with `$`, and also won't render any LaTeX commands that can't by typed without `\`. This version of MathQuill's JS is only somewhat smaller, but the font is like 100x smaller.
+
+To run this smaller version, serve and load `mathquill-basic.{js,min.js,css}` and `font/Symbola-basic.{eot,ttf}` instead.
 
 # Testing
 
@@ -14,25 +16,23 @@
 
 # Understanding The Source Code
 
-All the CSS is in `src/css`. The choice of font isn't settled, and fractions are somewhat arcane, see the Wiki pages ["Fonts"](http://github.com/mathquill/mathquill/wiki/Fonts) and ["Fractions"](http://github.com/mathquill/mathquill/wiki/Fractions).
-
 All the JavaScript that you actually want to read is in `src/`. `build/` is created by `make` to contain the same JS concatenated and minified.
 
+All the CSS is in `src/css`. The choice of font isn't settled, and fractions are somewhat arcane, see the Wiki pages ["Fonts"](http://github.com/mathquill/mathquill/wiki/Fonts) and ["Fractions"](http://github.com/mathquill/mathquill/wiki/Fractions).
+
 ## Architecture
 
-There's 2 thin layers sandwiching 2 broad, modularized layers:
-
-At the highest level, the public API is a thin wrapper around calls to [services](http://mathquill.readthedocs.org/en/latest/Contributing/#service) on the controller. These set event listeners that call methods on [commands](http://mathquill.readthedocs.org/en/latest/Contributing/#command) in the [edit tree](http://mathquill.readthedocs.org/en/latest/Contributing/#edit-tree). Those commands call tree and cursor manipulation methods to do actions like move the cursor or edit the tree.
+There's 2 thin layers sandwiching 2 broad, modularized layers. At the highest level, the public API is a thin wrapper around calls to [services](http://mathquill.readthedocs.org/en/latest/Contributing/#service) on the controller. These set event listeners that call methods on [commands](http://mathquill.readthedocs.org/en/latest/Contributing/#command) in the [edit tree](http://mathquill.readthedocs.org/en/latest/Contributing/#edit-tree). Those commands call tree and cursor manipulation methods to do actions like move the cursor or edit the tree.
 
 ## Edit Tree
 
 At the lowest level, the **edit tree** of JS objects represents math and text analogously to how [the HTML DOM](http://www.w3.org/TR/html5-author/introduction.html#a-quick-introduction-to-html) represents a web page.
 
-`tree.js` defines base classes of objects relating to the tree.
+[`tree.js`](https://github.com/mathquill/mathquill/blob/master/src/tree.js) defines base classes of objects relating to the tree.
 
-`cursor.js` defines objects representing the cursor and a selection of math or text, with associated HTML elements.
+[`cursor.js`](https://github.com/mathquill/mathquill/blob/master/src/cursor.js) defines objects representing the cursor and a selection of math or text, with associated HTML elements.
 
-Old docs variously called this the "math tree", the "fake DOM", or some combination thereof, like the "math DOM".
+Old docs called this the "math tree", the "fake DOM", or some combination thereof, like the "math DOM".
 
 ## Command
 
@@ -46,17 +46,17 @@
 
 Services define methods on the controller that call methods on nodes in the edit tree with certain contracts, such as a controller method called on initialization to set listeners for keyboard events, that when the Left key is pressed, calls `.moveTowards` on the node just left of the cursor, dispatching on what kind of command the node is (`Fraction::moveTowards` and `SquareRoot::moveTowards` can insert the cursor in different places).
 
-`controller.js` defines the base class for the **controller**, which each math field or static math instance has one of, and to which each service adds methods.
+[`controller.js`](https://github.com/mathquill/mathquill/blob/master/src/controller.js) defines the base class for the **controller**, which each math field or static math instance has one of, and to which each service adds methods.
 
 ## API
 
-`publicapi.js` defines the global `MathQuill.getInterface()` function, the mathField constructors, and the API objects returned by them. The constructors, and the API methods on the objects they return, call appropriate controller methods to initialize and manipulate math field and static math instances.
+[`publicapi.js`](https://github.com/mathquill/mathquill/blob/master/src/publicapi.js) defines the global `MathQuill.getInterface()` function, the mathField constructors, and the API objects returned by them. The constructors, and the API methods on the objects they return, call appropriate controller methods to initialize and manipulate math field and static math instances.
 
 ## Other Components
 
-`services/*.util.js` files are unimportant to the overall architecture. You can largely ignore them until you have to deal with code that is using them.
+[`services/*.util.js`](https://github.com/mathquill/mathquill/tree/master/src/services) files are unimportant to the overall architecture. You can largely ignore them until you have to deal with code that is using them.
 
-`intro.js` defines some simple sugar for the idiomatic JS classes used throughout MathQuill, plus some globals and opening boilerplate.
+[`intro.js`](https://github.com/mathquill/mathquill/blob/master/src/intro.js) defines some simple sugar for the idiomatic JS classes used throughout MathQuill, plus some globals and opening boilerplate.
 
 ## Conventions
 
