diff --git a/README.md b/README.md
index f0116b15c1..767842443f 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
# Welcome to Gradio
-Quickly create customizable UI components around your models. Gradio makes it easy for you to "play around" with your model in your browser by dragging-and-dropping in your own images, pasting your own text, recording your own voice, etc. and seeing what the model outputs.
+Quickly create beautiful user interfaces around your machine learning models. Gradio (pronounced GRAY-dee-oh) makes it easy for you to demo your model in your browser or let people "try it out" by dragging-and-dropping in their own images, pasting text, recording their own voice, etc. and seeing what the model outputs.

@@ -12,16 +12,18 @@ Gradio is useful for:
* **Deploying** your models quickly with automatic shareable links and getting feedback on model performance
-* **Debugging** your model interactively during development using built-in interpretation visualizations for any model
+* **Debugging** your model interactively during development using built-in manipulation and interpretation tools
**You can find an interactive version of the following Getting Started at [https://gradio.app/getting_started](https://gradio.app/getting_started).**
## Getting Started
+**Prerequisite**: Python 3.7+ and that's it!
+
### Quick Start
-To get Gradio running with a simple example, follow these three steps:
+To get Gradio running with a simple "Hello, World" example, follow these three steps:
1. Install Gradio from pip.
@@ -48,15 +50,15 @@ iface.launch()

-### The Interface
+### Understanding the `Interface` class
-Gradio can wrap almost any Python function with an easy-to-use user interface. That function could be anything from a simple tax calculator to a pretrained machine learning model.
+Gradio can wrap almost any Python function with an easy-to-use user interface. In the example above, we saw a simple text-based function. But the function could be anything from image enhancer to a tax calculator to (most commonly) the prediction function of a pretrained machine learning model.
The core `Interface` class is initialized with three parameters:
- `fn`: the function to wrap
-- `inputs`: the input component type(s)
-- `outputs`: the output component type(s)
+- `inputs`: the input component type(s), e.g. `"image"` or `"audio"` ([see docs for complete list](/docs))
+- `outputs`: the output component type(s) e.g. `"image"` or `"label"` ([see docs for complete list](/docs))
With these three arguments, we can quickly create interfaces and `launch()` them. But what if you want to change how the UI components look or behave?
@@ -260,9 +262,9 @@ Note there is no submit button, because the interface resubmits automatically on
### Using State
-Your function may use data that persists beyond a single function call. If the data is something accessible to all function calls, you can create a global variable outside the function call and access it inside the function. For example, you may load a large model outside the function and use it inside the function so that every function call does not need to reload the model.
+Your function may use data that persists beyond a single function call. If the data is something accessible to all function calls and all users, you can create a global variable outside the function call and access it inside the function. For example, you may load a large model outside the function and use it inside the function so that every function call does not need to reload the model.
-Another type of data persistence Gradio supports is session state, where data persists across multiple submits within a page load. To store data with this permanence, use `gr.get_state` and `gr.set_state` methods.
+Another type of data persistence Gradio supports is session **state**, where data persists across multiple submits within a page load. However, data is *not* shared between different users of your model. To store data in a session state, you need to do three things: (1) Pass in an extra parameter into your function, which represents the state of the interface. (2) At the end of the function, return the updated value of the state as an extra return value (3) Add the `'state'` input and `'state'` output components when creating your `Interface`. See the chatbot example below:
```python
import random
@@ -307,7 +309,7 @@ iface.launch()
```

-Notice how the state persists across submits within each page, but the state is not shared between the two pages.
+Notice how the state persists across submits within each page, but the state is not shared between the two pages. Some more points to note: you can pass in a default value to the state parameter, which is used as the initial value of the state. The state must be a something that can be serialized to a JSON format (e.g. a dictionary, a list, or a single value. Typically, objects will not work).
### Flagging
diff --git a/guides/README.md b/guides/README.md
new file mode 100644
index 0000000000..33ca61c82e
--- /dev/null
+++ b/guides/README.md
@@ -0,0 +1,30 @@
+# Contributing a Guide
+
+Want to help teach Gradio? Consider contributing a Guide! 🤗
+
+Broadly speaking, there are two types of guides:
+
+* **Use cases**: guides that cover step-by-step how to build a particular type of machine learning demo or app using Gradio. Here's an example: [_Creating a Chatbot_](https://github.com/gradio-app/gradio/blob/master/guides/creating_a_chatbot.md)
+* **Feature explanation**: guides that describe in detail a particular feature of Gradio. Here's an example: [_Using Flagging_](https://github.com/gradio-app/gradio/blob/master/guides/using_flagging.md)
+
+We encourage you to submit either type of Guide! (Looking for ideas? We may also have open [issues](https://github.com/gradio-app/gradio/issues?q=is%3Aopen+is%3Aissue+label%3Aguides) where users have asked for guides on particular topics)
+
+## Guide Structure
+
+As you can see with the previous examples, Guides are standard markdown documents. They usually:
+* start with an Introduction section describing the topic
+* include subheadings to make articles easy to navigate
+* include real code snippets that make it easy to follow along and implement the Guide
+* include embedded Gradio demos to make them more interactive and provide immediate demonstrations of the topic being discussed. These Gradio demos are hosted on [Hugging Face Spaces](https://huggingface.co/spaces) and are embedded using the standard \