diff --git a/README.md b/README.md
index fa892a8..ce579b3 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,79 @@
-See docs https://godoc.org/github.com/micromdm/mdm
+[![GoDoc](https://godoc.org/github.com/micromdm/mdm?status.svg)](http://godoc.org/github.com/micromdm/mdm) [![Build Status](https://travis-ci.org/micromdm/mdm.svg?branch=master)](https://travis-ci.org/micromdm/mdm)
+
+The mdm package holds structs and helper methods for payloads in Apple's Mobile Device Management protocol.
+This package embeds the various payloads and responses in two structs - `Payload` and `Response`.
+
+# How an MDM server executes commands on a device.
+To communicate with a device, an MDM server must create a Payload property list with a specific RequestType and additional data for each request type. Let's use the DeviceInformation request as an example:
+
+
+```
+ // create a request
+ request := &CommandRequest{
+ RequestType: "DeviceInformation",
+ Queries: []string{"IsCloudBackupEnabled", "BatteryLevel"},
+ }
+
+ // NewPayload will create a proper Payload based on the CommandRequest struct
+ payload, err := NewPayload(request)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ // Encode in a plist and print to stdout
+ // uses the github.com/groob/plist package
+ encoder := plist.NewEncoder(os.Stdout)
+ encoder.Indent(" ")
+ if err := encoder.Encode(payload); err != nil {
+ log.Fatal(err)
+ }
+```
+
+Resulting command payload:
+```
+
+
+
+
+ Command
+
+ Queries
+
+ IsCloudBackupEnabled
+ BatteryLevel
+
+ RequestType
+ DeviceInformation
+
+ CommandUUID
+ fa34b4b7-0553-4b3a-9c4b-76b8b357a622
+
+
+```
+
+An MDM server will queue this request and send a push notification to a device. When device checks in, the server will
+reply with the queued plist.
+
+Once the device receives and processes the payload plist, it will reply back to the server. The response will be another plist, which can be unmarshalled into the `Response` struct. Below is the response to our DeviceInformation request.
+
+```
+
+
+
+
+ CommandUUID
+ fa34b4b7-0553-4b3a-9c4b-76b8b357a622
+ QueryResponses
+
+ BatteryLevel
+ 1
+ IsCloudBackupEnabled
+
+
+ Status
+ Acknowledged
+ UDID
+ 1111111111111111111111111111111111111111
+
+
+```