add inline comments
diff --git a/README.md b/README.md
index c75b87d..02a83ce 100644
--- a/README.md
+++ b/README.md
@@ -85,6 +85,8 @@
  - Add some account/identity/maybe crypto-web-of-trust system for
    authors to publish “legit” plugins.
  - Sign & verify individual releases.
+ - Handle unclean un/installs if CouchDB crashes while installing/
+   uninstalling
 
 A few more things that can happen concurrently depending on what
 plugins require:
diff --git a/src/couch_plugins.erl b/src/couch_plugins.erl
index dfd59a2..7adadc4 100644
--- a/src/couch_plugins.erl
+++ b/src/couch_plugins.erl
@@ -51,10 +51,30 @@
 
   ok.
 
+%% * * *
+
+
+%% Plugin Registration
+%% On uninstall:
+%%  - add plugins/name = version to config
+%% On uninstall:
+%%  - remove plugins/name from config
+
 -spec register_plugin(string(), string()) -> ok.
 register_plugin(Name, Version) ->
   couch_config:set("plugins", Name, Version).
 
+-spec unregister_plugin(string()) -> ok.
+unregister_plugin(Name) ->
+  couch_config:delete("plugins", Name).
+
+%% * * *
+
+
+%% Load Config
+%% Pareses <plugindir>/priv/default.d/<pluginname.ini> and applies
+%% the contents to the config system.
+
 -spec load_config(string(), string()) -> ok.
 load_config(Name, Version) ->
     lists:foreach(
@@ -73,6 +93,10 @@
 set_config({{Section, Key}, Value}) ->
     ok = couch_config:set(Section, Key, Value, false).
 
+%% * * *
+
+
+
 -spec add_code_path(string(), string()) -> ok | {error, bad_directory}.
 add_code_path(Name, Version) ->
   PluginPath = plugin_dir() ++ "/" ++ get_file_slug(Name, Version) ++ "/ebin",