diff --git a/README b/README
index e6d65b55c136fe1f77e127e7d3ec18698d6d7f44..cdc9f9484ff3ad0e7a508f256410b12cc67e12bb 100644
--- a/README
+++ b/README
@@ -5,40 +5,27 @@ Channel: irc://irc.freenode.net/guppy
 
 Feedback means are #guppy at freenode, and the feedback form on the website.
 
-=== Install ===
+For installation instructions, please see the INSTALL file.
 
-After downloading guppy, the directory structure will be similar to something like this:
+== Get involved ==
 
-   * guppy
-   * irc.py
-   * plugins/
-   * README
-   * TODO
+We are actively looking for people who can contribute to the following activities:
 
-The installer script will prompt you with a list of plugins. Choose carefully, the default is minimal! A description of each plugin can be found at the Features page.
+    Debugging and patching existing issues (TODO in the repo);
+    Writing tests ("unit tests"?, I know Perl does them);
+    Reviewing the code for style and performance;
+    Writing documentation;
+    Packaging guppy for different Operating Systems and distributions;
+    Testing each release;
+    Using guppy and making extensive use of the feedback to aim to reliable, intuitive work of the software.
 
-Run the 'guppy' executable once to launch the installer script.
+It is easy to see that not all things require developer knowledge.
 
-After the configuration, the binary will exit, and you will need to start it again in screen or tmux with no arguments; guppy does not fork into the background.
+There is a current most noticeable need but lack of effort in packaging.
 
-In short,
+If you are interested in any of those activities, see you on IRC or use the Mailform link at the left.
 
- 1)   cd guppy
- 2)   ./guppy
- 3)   run guppy in background.
+Please invite all your friends who could help.
 
-guppy works with Python 3 only. 
+Thanks!
 
-=== Notes ===
-
-1) For debugging, to make a unix OS user lose internet connection, run
-
-# iptables -A OUTPUT -o eth0 -m owner --uid-owner 1002 -j DROP
-
-To reset, 
-
-# iptables --flush
-
-
-
-EOF
diff --git a/TODO b/TODO
index 5648585545b28244c4810b51dfc953a24388ab18..63aa5234e3e4fd6a1c1599273f88df8c4a52c9e2 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,9 @@
+== Style guidelines ==
+
+* Don't mix tabs and spaces in one file. It is currently recommended to use 4 spaces for indentation (discussion is welcome as long as we agree to convert existing files to a new style).
+
+== TODO ==
+
 Deadline: December 10, 2012
 
 [ ] Core fixes
diff --git a/doc/debug_networking b/doc/debug_networking
new file mode 100644
index 0000000000000000000000000000000000000000..e01c56e23c1915f1bce72240472f953fe0d13b62
--- /dev/null
+++ b/doc/debug_networking
@@ -0,0 +1,8 @@
+For debugging, to make a unix OS user lose internet connection, run
+
+# iptables -A OUTPUT -o eth0 -m owner --uid-owner 1002 -j DROP
+
+To reset,
+
+# iptables --flush
+
diff --git a/doc/git b/doc/git
new file mode 100644
index 0000000000000000000000000000000000000000..136145e7632ff2559b5323138f97d33426545235
--- /dev/null
+++ b/doc/git
@@ -0,0 +1,126 @@
+This page is a git cheatsheet. git is recommended for contributing to guppy, but is not required.
+
+(As always, manpages are the grand superior resource.)
+
+====== Starting ======
+
+You can create an own git project inside your home directory using:
+
+  mkdir project.git
+  cd project.git
+  git init --bare
+
+The above command creates a so called "bare" repository in the project.git directory (it is just the contents of the "''.git''" directory, without any files checked out around it).
+
+
+Now you can "push" your local git repository to the remote machine using:
+
+
+  $ cd project
+  
+  $ git init
+  $ git add *
+  
+  $ git commit -m "Initial commit"
+  
+  $ git remote add origin ssh://USERNAME@eu.gshellz.org:222/~USERNAME/project.git
+  $ git push origin master
+
+
+Please note, that the ''USERNAME'' should be replaced with your username on the corresponding server. In the future, you can easily push and pull all changes in this projects using git pull (to fetch the changes) or git push (to publish the changes in your remote repository).
+
+====== Undoing commits ======
+
+
+To undo commits, you need to set the branch head to an older commit. All next commits will be gone.
+
+1) Find the sha of the last commit you want to keep. Do a
+
+  $ git log
+
+Each commit will be visible like this:
+
+  commit 1e3487c2fdfd1e8299744a1e7fae4ca3867bc9b9
+  Author: thewookie <thewookie@gshellz.org>
+  Date:   Tue Aug 2 10:26:38 2011 +0930
+  
+      Test commit.
+
+
+The "''1e3487c2fdfd1e8299744a1e7fae4ca3867bc9b9''" is the hash.
+
+2) Reset the branch to the needed commit.
+
+  $ git reset --hard 1e3487c2fdfd1e8299744a1e7fae4ca3867bc9b9''
+
+If you use --soft switch, files will be unchanged.
+If you use --hard switch, files be changed to match the state after the indicated commit. 
+
+3) If you already pushed before, you will need to "force" the push to indicate that the loss of data (next commits) is intentional.
+
+  $ git push -f
+
+====== Formatted patches ======
+
+git can save the changes you made to a file so someone can apply them later. That's why you don't need commit access - all you need is to send patches, and have developers apply them. It is a feature of git as opposed to svn.
+
+To get a patch for your changes, you need to follow some easy steps.
+
+1) Commit latest changes.
+
+Do a git add for the new files, and then ''git -m "added foo to bar"'', or simply ''git -am "added foo to bar"'' to have git add and remove files to the repo according to filesystem changes automatically.
+
+
+2) Find a previous revision number.
+
+Look at git log and find a previous revision number.
+
+    commit d45g67j8k9la2cvmz85a6858d58a5cb4c978b676
+    Author: thewookie <thewookie@gshellz.org>
+    Date:   Mon Oct 3 21:35:41 2011 +0200
+  
+        add foo to bar
+  
+    commit e183890d8f78ce45y6u7d4f5g6hj7j8gf05a30ad
+    Author: thewookie <thewookie@gshellz.org>
+    Date:   Sat Oct 1 23:09:44 2011 +0200
+  
+        test
+  
+
+
+
+3) git format-patch
+
+Do a ''git format-patch revision_#_here''. You will see a filename as output. This is the file which contains your new patch. Example,
+
+  $ git format-patch e183890d8f78ce45y6u7d4f5g6hj7j8gf05a30ad
+  0001-add-foo-to-bar.patch
+  $ head 0001-add-foo-to-bar.patch
+  From d45g67j8k9la2cvmz85a6858d58a5cb4c978b676 Mon Sep 17 00:00:00 2001
+  From: thewookie <thewookie@gshellz.org>
+  Date: Mon, 3 Oct 2011 21:35:41 +0300
+  Subject: [PATCH] add foo to bar
+  
+  ---
+   .gitignore        |    2 +
+   bar               |   52 ++++++++++++++++++++++++++++++++++++++++++++++++--
+   bar.conf.dist     |   54 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+   3 files changed, 105 insertions(+), 3 deletions(-)
+  create mode 100644 .gitignore
+  
+  diff --git a/.gitignore b/.gitignore
+  new file mode 100644
+  $
+
+4) git am
+
+To apply a patch, use **''git am''**, replacing ''patchname.patch'' with a real file name.
+
+  $ git am --signoff < patchname.patch
+  Applying: add foo to bar
+
+
+====== Links ======
+
+  * [[http://sethrobertson.github.com/GitPostProduction/gpp.html|Post-production editing using git]]
diff --git a/doc/wishlist b/doc/wishlist
new file mode 100644
index 0000000000000000000000000000000000000000..c0b63a3f52fb0d2a79f8d007e708383121d39e79
--- /dev/null
+++ b/doc/wishlist
@@ -0,0 +1,30 @@
+Wishlist
+
+== Core ==
+  * Implement [[http://ircv3.atheme.org/|IRC "v3"]] compatibility.
+  * <del>Implement ''self.server.mynick'' to reflect nick changes, after which bot nick is not the conf nick.</del> Unneeded?
+  * Adding tags/categories for available commands could increase usability.
+  * Read [[http://tools.ietf.org/html/rfc1459|RFC1459]] and add any issues to 'current'.
+  * jabber suppport
+  * Rate-limit sent lines.
+
+== Plugins ==
+  * An idea was/is to create a plugin for a multi-network relay for linking channels.
+  * Create a patch plugin. User says '!patchadd url comment' and bot adds the information to queue which bot owner can see using '!patchlist' or something like that. Possible shorter command names easier to remember and owner access to delete patches or change comments.
+  * Create an RSS or Atom feed plugin (whichever easier or both).
+  * Create a Trout plugin (similar as smack).
+  * Extend blockbot plugin
+    * to have several levels of reaction to flood.
+    * to kick people when there's too many (like +l but in the bot). Optional feature?
+    * to check for spam strings in part or quit messages.
+    * to kick or ban on join/part or join/quit floods.
+    * to enter emergency mode (+m for flood, +i for join flood, etc).
+  * Add ip tracking to auth plugin (warnings or blocks for people who have an account from an ip but try to authenticate as another user).
+
+== Other ==
+
+  * a cronjob line
+
+== External links ==
+  * [[http://thc.org/root/phun/unmaintain.html|Roedy Green. How To Write Unmaintainable Code - Ensure a job for life ;-)]]
+