diff --git a/content/docs/faq-ajax.md b/content/docs/faq-ajax.md
new file mode 100644
index 00000000..5dd852e0
--- /dev/null
+++ b/content/docs/faq-ajax.md
@@ -0,0 +1,80 @@
+---
+id: faq-ajax
+title: AJAX and APIs
+permalink: docs/faq-ajax.html
+layout: docs
+category: FAQ
+---
+
+### How can I make an AJAX call?
+
+You can use any AJAX library you like with React. Some popular ones are [Axios](https://github.com/axios/axios), [jQuery AJAX](https://api.jquery.com/jQuery.ajax/), and the browser built-in [window.fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API).
+
+### Where in the component lifecycle should I make an AJAX call?
+
+You should populate data with AJAX calls in the [`componentDidMount`](https://reactjs.org/docs/react-component.html#mounting) lifecycle method. This is so you can use `setState` to update your component when the data is retrieved.
+
+### Example: Using AJAX results to set local state
+
+The component below demonstrates how to make an AJAX call in `componentDidMount` to populate local component state.
+
+The example API returns a JSON object like this:
+
+```
+{
+ items: [
+ { id: 1, name: 'Apples', price: '$2' },
+ { id: 2, name: 'Peaches', price: '$5' }
+ ]
+}
+```
+
+```jsx
+class MyComponent extends React.Component {
+ state = {
+ error: null,
+ isLoaded: false,
+ items: []
+ };
+
+ componentDidMount() {
+ fetch("https://api.example.com/items")
+ .then(res => res.json())
+ .then(result =>
+ this.setState({
+ isLoaded: true,
+ items: result.items
+ })
+ )
+ .catch(error =>
+ this.setState({
+ isLoaded: true,
+ error
+ })
+ );
+ }
+
+ render() {
+ const { error, items } = this.state;
+ if (error) {
+ return
Error: {error.message}
;
+ } else if (!isLoaded) {
+ return
Loading ...
;
+ } else {
+ return (
+
+ {items.map(item => (
+
+ {item.name} {item.price}
+
+ ))}
+
+ );
+ }
+ }
+}
+```
+
+### Cancellation
+
+Note that if the component unmounts before an AJAX call is complete, you may see a warning like `cannot read property 'setState' of undefined`. If this is an issue you may want to keep track of inflight AJAX requests and cancel them in the `componentWillUnmount` lifecycle method.
diff --git a/content/docs/faq-build.md b/content/docs/faq-build.md
new file mode 100644
index 00000000..9c112cd2
--- /dev/null
+++ b/content/docs/faq-build.md
@@ -0,0 +1,24 @@
+---
+id: faq-build
+title: Babel, JSX, and Build Steps
+permalink: docs/faq-build.html
+layout: docs
+category: FAQ
+---
+
+### Do I need to use JSX with React?
+
+No! Check out ["React Without JSX"](/docs/react-without-jsx.html) to learn more.
+
+### Do I need to use ES6 (+) with React?
+
+No! Check out ["React Without ES6"](/docs/react-without-es6.html) to learn more.
+
+### How can I write comments in JSX?
+
+```jsx
+
+ {/* Comment goes here */}
+ Hello, {name}!
+
+```
diff --git a/content/docs/faq-functions.md b/content/docs/faq-functions.md
new file mode 100644
index 00000000..6cb41a57
--- /dev/null
+++ b/content/docs/faq-functions.md
@@ -0,0 +1,179 @@
+---
+id: faq-functions
+title: Passing Functions to Components
+permalink: docs/faq-functions.html
+layout: docs
+category: FAQ
+---
+
+### How do I pass an event handler (like onClick) to a component?
+
+Pass event handlers and other functions as props to child components:
+
+```jsx
+