diff --git a/README.md b/README.md
index 02ecc75ee6..32ce06075d 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,6 @@
-[](https://gitter.im/airbnb/javascript?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
-
-# Airbnb JavaScript Style Guide() {
-
-*A mostly reasonable approach to JavaScript*
+# Conde Nast JavaScript Style Guide() {
 
+*A mostly reasonable approach to JavaScript—forked from Conde Nast, originally written by [Airbnb](https://github.com/Airbnb/javascript).*
 
 ## Table of Contents
 
@@ -27,6 +24,7 @@
   1. [Constructors](#constructors)
   1. [Events](#events)
   1. [Modules](#modules)
+  1. [React](#react)
   1. [jQuery](#jquery)
   1. [ECMAScript 5 Compatibility](#ecmascript-5-compatibility)
   1. [Testing](#testing)
@@ -35,7 +33,7 @@
   1. [In the Wild](#in-the-wild)
   1. [Translation](#translation)
   1. [The JavaScript Style Guide Guide](#the-javascript-style-guide-guide)
-  1. [Chat With Us About Javascript](#chat-with-us-about-javascript)
+  1. [Chat With Airbnb About Javascript](#chat-with-airbnb-about-javascript)
   1. [Contributors](#contributors)
   1. [License](#license)
 
@@ -279,7 +277,7 @@
     // immediately-invoked function expression (IIFE)
     (function() {
       console.log('Welcome to the Internet. Please follow me.');
-    })();
+    }());
     ```
 
   - Never declare a function in a non-function block (if, while, etc). Assign the function to a variable instead. Browsers will allow you to do it, but they all interpret it differently, which is bad news bears.
@@ -619,14 +617,14 @@
 
 ## Blocks
 
-  - Use braces with all multi-line blocks.
+  - Use braces with all blocks.
 
     ```javascript
     // bad
     if (test)
       return false;
 
-    // good
+    // bad
     if (test) return false;
 
     // good
@@ -733,26 +731,20 @@
     }
     ```
 
-  - Prefixing your comments with `FIXME` or `TODO` helps other developers quickly understand if you're pointing out a problem that needs to be revisited, or if you're suggesting a solution to the problem that needs to be implemented. These are different than regular comments because they are actionable. The actions are `FIXME -- need to figure this out` or `TODO -- need to implement`.
-
-  - Use `// FIXME:` to annotate problems.
+  - Prefixing your comments with `@TODO` helps other developers quickly understand if you're pointing out a problem that needs to be revisited, or if you're suggesting a solution to the problem that needs to be implemented. These are different than regular comments because they are actionable. The actions are `@TODO -- need to figure this out` or `@TODO -- need to implement`. Note the leading `@`— this is a [JSDoc](http://usejsdoc.org/) comment. Make sure you initial and date your comment; future developers (including future you) will thank you.
 
     ```javascript
     function Calculator() {
 
-      // FIXME: shouldn't use a global here
+      // @TODO shouldn't use a global here (pg 28 Apr 2015)
       total = 0;
 
       return this;
     }
-    ```
-
-  - Use `// TODO:` to annotate solutions to problems.
 
-    ```javascript
     function Calculator() {
 
-      // TODO: total should be configurable by an options param
+      // @TODO total should be configurable by an options param (eqw 28 Apr 2015)
       this.total = 0;
 
       return this;
@@ -846,25 +838,25 @@
   - End files with a single newline character.
 
     ```javascript
-    // bad
+    // good
     (function(global) {
       // ...stuff...
-    })(this);
+    }(this));↵
     ```
 
     ```javascript
     // bad
     (function(global) {
       // ...stuff...
-    })(this);↵
-    ↵
+    }(this));
     ```
 
     ```javascript
-    // good
+    // bad
     (function(global) {
       // ...stuff...
-    })(this);↵
+    }(this));↵
+    ↵
     ```
 
   - Use indentation when making long method chains. Use a leading dot, which
@@ -944,6 +936,7 @@
     return obj;
     ```
 
+  - Trailing whitespace is an error. **Please set your editor or IDE to strip trailing whitespace on save**, or at least set it to make trailing whitespace visible so you can remove it yourself.
 
 **[⬆ back to top](#table-of-contents)**
 
@@ -1023,19 +1016,19 @@
     (function() {
       var name = 'Skywalker'
       return name
-    })()
+    }())
 
     // good
     (function() {
       var name = 'Skywalker';
       return name;
-    })();
+    }());
 
     // good (guards against the function becoming an argument when two files with IIFEs are concatenated)
     ;(function() {
       var name = 'Skywalker';
       return name;
-    })();
+    }());
     ```
 
     [Read more](http://stackoverflow.com/a/7365214/1712802).
@@ -1456,6 +1449,51 @@
 **[⬆ back to top](#table-of-contents)**
 
 
+## React
+Our React style is mostly influenced by [David Chang's style guide](https://reactjsnews.com/react-style-guide-patterns-i-like/). Exceptions are enumerated below.
+
+  - Since `displayName` is automatically set by React after calling `React.createClass()` and transpiling from JSX to JavaScript, there's no need to explicitly include one:
+
+  ```javascript
+    // Preferred
+    React.createClass({
+      propTypes: {},
+      mixins: [],
+      getInitialState: function () {},
+      componentWillMount: function () {},
+      componentWillUnmount: function () {},
+      render: function() {}
+    });
+
+    // Not preferred
+    React.createClass({
+      displayName: '',
+      propTypes: {},
+      mixins: [],
+      getInitialState: function () {},
+      componentWillMount: function () {},
+      componentWillUnmount: function () {},
+      render: function () {}
+    });
+  ```
+
+  - When it comes to conditionals, we tend to prefer `&&` to ternaries and will often use `&&` rather than breaking logic out into separate methods:
+
+  ```javascript
+    renderContent: function () {
+      var content =
+        
+          {this.props.foo && 
}
+          {this.props.isTruthy && 
}
+          {this.props.isTruthy && this.renderMyComponent()}
+