diff --git a/.idea/auth_oauth2.iml b/.idea/auth_oauth2.iml
new file mode 100644
index 00000000..7fe256fb
--- /dev/null
+++ b/.idea/auth_oauth2.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..afb47af5
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index f3cd0ea8..edb4b7cd 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,106 @@
# auth_oauth2
-[![version 1.0.0](https://img.shields.io/badge/pub-1.0.0-brightgreen.svg)](https://pub.dartlang.org/packages/angel_auth_oauth2)
+[![version 1.0.1](https://img.shields.io/badge/pub-1.0.1-brightgreen.svg)](https://pub.dartlang.org/packages/angel_auth_oauth2)
-angel_auth strategy for OAuth2 login, i.e. Facebook.
+`package:angel_auth` strategy for OAuth2 login, i.e. Facebook or Github.
+
+# Usage
+First, create an options object:
+
+```dart
+configureServer(Angel app) async {
+ // Load from a Map, i.e. app config:
+ var opts = new AngelOAuth2Options.fromJson(map);
+
+ // Create in-place:
+ const AngelAuthOAuth2Options OAUTH2_CONFIG = const AngelAuthOAuth2Options(
+ callback: '',
+ key: '',
+ secret: '',
+ authorizationEndpoint: '',
+ tokenEndpoint: '');
+}
+```
+
+After getting authenticated against the remote server, we need to be able to identify
+users within our own application. Use an `OAuth2Verifier` to associate remote users
+with local users.
+
+```dart
+/// You might use a pure function to create a verifier that queries a
+/// given service.
+OAuth2Verifier oauth2verifier(Service userService) {
+ return (oauth2.Client client) async {
+ var response = await client.get('https://api.github.com/user');
+ var ghUser = JSON.decode(response.body);
+ var id = ghUser['id'];
+
+ Iterable