diff --git a/README.md b/README.md
index 4722b22f8d62facec5eb8360d9312c56b9e415b4..fced68e78846358a791f45e9f2837a321c20126d 100644
--- a/README.md
+++ b/README.md
@@ -31,3 +31,52 @@ If `flicd` and this script are not run from the same device, ensure that `flicd`
 **Can I run `flicd` as a daemon/at startup?**
 
 Yes. See https://ethtiter.com/ for a `systemd` service file.
+
+**How is the `buttons` property of `config.json` structured?**
+
+Each object within the `buttons` property is structured according to how the button should respond to the entity's current state. For example, if the light is off, what should a button press do.
+
+	"mac": {
+		"mac": "mac",
+		"label": "Lamp",
+		"status": {
+			"entity_id": "switch.lamp"
+		},
+		"off": {
+			"entity": "switch",
+			"entity_id": "switch.lamp",
+			"entity_action": "turn_on"
+		},
+		"on": {
+			"entity": "switch",
+			"entity_id": "switch.lamp",
+			"entity_action": "turn_off"
+		}
+	}
+
+The above example simply switches a light on and off, depending on its current state. There can be any number of state entries in an individual button's object, however. A button could be configured only to respond to the "on" state by omitting the "off" entry, or if the entity returns other states, those could also be handled. An example of this comes when interacting with Smart Home Assistant, which has three states:
+
+	"mac": {
+		"mac": "mac",
+		"label": "Smart Home Monitor",
+		"status": {
+			"entity_id": "alarm_control_panel.shm"
+		},
+		"disarmed": {
+			"entity": "alarm_control_panel",
+			"entity_id": "alarm_control_panel.shm",
+			"entity_action": "alarm_arm_home"
+		},
+		"armed_home": {
+			"entity": "alarm_control_panel",
+			"entity_id": "alarm_control_panel.shm",
+			"entity_action": "alarm_disarm"
+		},
+		"armed_away": {
+			"entity": "switch",
+			"entity_id": "switch.lamp",
+			"entity_action": "turn_on"
+		}
+	}
+
+In this example, if the alarm isn't active, or is set to the "armed home" state, its Flic button will toggle between those states. If, however, one tried to use the button to disable the alarm when no one is home (motion sensors are active, among other changes), the button will simply turn on a light; it won't disarm the alarm, as that's something I only allow for those who have access to Home Assistant or SmartThings directly.
diff --git a/config-sample.json b/config-sample.json
index 78c95854dec672ee4b312e95cfbce59314e0d44c..012739239400410c3d94b1360be4c1f8f95b0749 100644
--- a/config-sample.json
+++ b/config-sample.json
@@ -23,5 +23,6 @@
         "entity_action": ""
       }
     }
-  }
+  },
+  "config_version": 2
 }
diff --git a/index.js b/index.js
index a522baacf5bbb7ee246af439c4711699339b29c1..68d1b553d1eead852537cbae88180e287d601d6a 100644
--- a/index.js
+++ b/index.js
@@ -11,7 +11,13 @@ var request               = require( 'request' );
 /**
  * CONFIGURATION & SETUP
  */
-var config               = require( './config.json' );
+var config = require( './config.json' );
+
+if ( 'undefined' === typeof config.config_version || config.config_version < 2 ) {
+    console.error( 'Configuration is for v0.1.0 and must be updated to work with this release. Exiting!' );
+    process.exit();
+}
+
 var homeAssistantApiBase = config.home_assistant_proto + '://' + config.home_assistant_host + ':' + config.home_assistant_port + '/api/';
 var client               = new FlicClient( config.flicd_ip, config.flicd_port );
 
@@ -92,14 +98,11 @@ function buttonActivated( mac ) {
         var service  = 'services/',
             postBody = {};
 
-        if ( 'off' === body.state ) {
-            service            += buttonConfig.on.entity + '/' + buttonConfig.on.entity_action;
-            postBody.entity_id = buttonConfig.on.entity_id;
-        } else if ( 'on' === body.state ) {
-            service            += buttonConfig.off.entity + '/' + buttonConfig.off.entity_action;
-            postBody.entity_id = buttonConfig.off.entity_id;
+        if ( 'object' === typeof buttonConfig[ body.state ] ) {
+            service            += buttonConfig[ body.state ].entity + '/' + buttonConfig[ body.state ].entity_action;
+            postBody.entity_id  = buttonConfig[ body.state ].entity_id;
         } else {
-            console.error( 'Unknown state: ' + body.state );
+            console.error( 'Unhandled state: ' + body.state );
             return;
         }
 
diff --git a/package.json b/package.json
index bc98c5c5b1c441f5f7b0aafd5145da941965da1a..38b71f74f20276dbce3ac74028f8a80cef892709 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "flic-button-home-assistant-controller",
-  "version": "0.1.0",
+  "version": "0.2.0",
   "description": "Control Home Assistant entities with Flic buttons",
   "author": "Erick Hitter <contact@ethitter.com>",
   "license": "GPL-2.0+",