diff --git a/IssueTrackerUse.md b/IssueTrackerUse.md
new file mode 100644
index 0000000..b5def61
--- /dev/null
+++ b/IssueTrackerUse.md
@@ -0,0 +1,88 @@
+# Introduction
+
+Here's the place to discuss ways to improve our use of the issue tracker.  We also use this page to capture information that we've wanted to shoe horn into the issue tracker but haven't yet been able to.
+
+
+# General Tips
+
+  * When adding a new issue to the issue tracker, [search all issues](http://code.google.com/p/soc/issues/list?can=1&q=-status:Verified,Duplicate&sort=-id), not just the open issues to see if it has been reported before.  There can be a lag between an issue being fixed and it being deployed in a running version of Melange.
+
+  * When merging issues, you may need to change the title summary of the issue.  Generally **don't be shy of changing the title of an issue** to make it clearer to someone reading the list what the issue is about.
+
+  * **Merging:** Most often we merge new (duplicate) issues into older issues.
+
+  * If you want to change the status or title of an issue and don't have the edit-rights to do so, ask on our IRC channel, #melange.
+
+# Canned Searches
+
+_See also the specific tags for searches for those tags_
+
+| [AJaxy Table](http://code.google.com/p/soc/issues/list?can=1&q=%22201%22&sort=id&colspec=ID+Summary) | An issue into which many component issues have been merged |
+|:-----------------------------------------------------------------------------------------------------|:-----------------------------------------------------------|
+| [The 1000 records issue](http://code.google.com/p/soc/issues/list?can=1&q=Issue+357&sort=id&colspec=ID+Summary) | A limitation with GAE that needs a workaround              |
+| [Due date](http://code.google.com/p/soc/issues/list?can=2&q=&sort=dueby+id&colspec=ID%20DueBy%20Summary%20Owner%20Status) | Issues sorted by due date                                  |
+
+
+
+# Issue Tracker Activities _(Terminology)_
+  * **Triage:** Deciding what needs to happen for ALL live issues in the tracker.
+
+  * **Cherry Picking:** Going through fixing and closing trivial issues (i.e. quick to fix issues) so that they do not clutter up the tracker.  Often leads to trivial issues changing status (e.g. to NeedInfo ).
+
+  * **Dredging:** Going through issues which are 6 months+ old, checking they are still valid, ensuring there is some policy in place so that they don't clog up the tracker.  Check for example that old issues which are not live have milestone 'future'.  'Dredging' can also be used for learning from closed issues, for example a spate of related invalid issues may indicate a need for some documentation changes.
+
+
+# NeedInfo Status
+
+  * It is very easy for an issue to get 'stuck' in NeedsInfo status.  When changing an issue to NeedsInfo status, it is a good idea to in the comment say what information is needed, so that it is easy to assess whether the issue is still in that status after a number of comments have arrived.
+
+Search for **[NeedInfo Issues](http://code.google.com/p/soc/issues/list?can=1&q=Status%3ANeedInfo&sort=id&colspec=ID+Summary)**
+
+# Special Tags and Statuses
+
+  * **[Verbiage](http://code.google.com/p/soc/issues/list?can=2&q=Label%3AVerbiage&sort=id&colspec=ID+Summary):** This item is a change in wording and if it also has the tag 'NeedsInfo' then likely it needs a decision on the wording to progress.
+
+  * **[Security](http://code.google.com/p/soc/issues/list?can=2&q=Label%3ASecurity&sort=id&colspec=ID+Summary):** At least some part of this issue is security related.  If a security issue is given a low priority some explanation about why it's not something to worry about will usually be given in the comments.
+
+  * **[Can't Fix](http://code.google.com/p/soc/issues/list?can=1&q=status%3Acantfix&sort=id&colspec=ID+Summary):** We won't fix this issue because it's not possible to.  This tag rarely survives long and there currently are just three 'Cant Fix' tags in the tracker.
+
+  * **[WikiDiscuss](http://code.google.com/p/soc/issues/list?can=1&q=WikiDiscuss&sort=id&colspec=ID+Summary):** Conversation has been taken to the wiki.  If no link is given in the issue tracker comments then visit page [WikiDiscuss](WikiDiscuss.md).
+
+  * **[DueBy-YEAR-MONTH-DAY](http://code.google.com/p/soc/issues/list?can=2&q=&sort=dueby+id&colspec=ID%20DueBy%20Summary%20Owner%20Status):** Date by which developer with issue assigned intends to have fix committed to mainline.
+
+  * **[PatchReceived](http://code.google.com/p/soc/issues/list?can=2&q=PatchReceived&sort=id&colspec=ID+DueBy+Summary+Priority+Owner+Status):** This issue has had a patch submitted. The patch is under review per these guidelines (taken from [27 April Team Meeting Notes](MeetingAgendasNotes.md))
+
+
+---
+
+
+---
+
+
+## Patch Reviews
+
+We want to get a lot **better about reviewing and committing patches**. Right now we are not doing this well enough. New strategy:
+
+  1. We quickly sync within 24 hours about who is going to review a patch.
+  1. All patches will be ack'ed within 48 hours, which means that we say at least "hey thanks we got your patch." Person ack'ing the patch is the person who will review it.
+  1. Patch will be reviewed and feedback sent to submitter and relevant issue in the tracker updated within 5 days (read: 120 hours).
+
+---
+
+
+---
+
+
+> _Add suggestions for new tags and statuses here..._
+
+# Issue Tracker Stats
+
+|Date|[PatchReceived](http://code.google.com/p/soc/issues/list?can=2&q=PatchReceived&sort=id&colspec=ID+DueBy+Summary+Priority+Owner+Status)|[Security](http://code.google.com/p/soc/issues/list?can=2&q=Label%3ASecurity&sort=dueby+id&colspec=ID+DueBy+Summary+Owner+Status)|[Verbiage](http://code.google.com/p/soc/issues/list?can=2&q=Label%3AVerbiage&sort=id&colspec=ID+Summary)|[NeedInfo](http://code.google.com/p/soc/issues/list?can=1&q=Status%3ANeedInfo&sort=id&colspec=ID+Summary)|[CantFix](http://code.google.com/p/soc/issues/list?can=1&q=status%3Acantfix&sort=id&colspec=ID+Summary)|
+|:---|:-------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------------------------|
+|2009-May-02| 3                                                                                                                                    | 5                                                                                                                               | 3                                                                                                      | 4                                                                                                       | 3                                                                                                     |
+|2009-May-21| 0                                                                                                                                    | 4                                                                                                                               | 3                                                                                                      | 4                                                                                                       | 3                                                                                                     |
+
+# Related Pages
+  * [TestingGuidelines](TestingGuidelines.md)
+  * [PendingUserStories](PendingUserStories.md)
+  * [WikiDiscuss](WikiDiscuss.md)
\ No newline at end of file
diff --git a/IssueTrackerUse.wiki b/IssueTrackerUse.wiki
deleted file mode 100644
index c2965ed..0000000
--- a/IssueTrackerUse.wiki
+++ /dev/null
@@ -1,81 +0,0 @@
-#summary For discussions about the issue tracker
-#labels Importance-Useful,Phase-Guidelines,Contents-Draft
-
-= Introduction =
-
-Here's the place to discuss ways to improve our use of the issue tracker.  We also use this page to capture information that we've wanted to shoe horn into the issue tracker but haven't yet been able to.
-
-
-= General Tips =
-
-  * When adding a new issue to the issue tracker, [http://code.google.com/p/soc/issues/list?can=1&q=-status:Verified,Duplicate&sort=-id search all issues], not just the open issues to see if it has been reported before.  There can be a lag between an issue being fixed and it being deployed in a running version of Melange.
-
-  * When merging issues, you may need to change the title summary of the issue.  Generally *don't be shy of changing the title of an issue* to make it clearer to someone reading the list what the issue is about.  
-
-  * *Merging:* Most often we merge new (duplicate) issues into older issues.
-  
-  * If you want to change the status or title of an issue and don't have the edit-rights to do so, ask on our IRC channel, #melange. 
-
-= Canned Searches =
-
-_See also the specific tags for searches for those tags_
-
-|| [http://code.google.com/p/soc/issues/list?can=1&q=%22201%22&sort=id&colspec=ID+Summary AJaxy Table] || An issue into which many component issues have been merged ||
-|| [http://code.google.com/p/soc/issues/list?can=1&q=Issue+357&sort=id&colspec=ID+Summary The 1000 records issue] || A limitation with GAE that needs a workaround ||
-|| [http://code.google.com/p/soc/issues/list?can=2&q=&sort=dueby+id&colspec=ID%20DueBy%20Summary%20Owner%20Status Due date] || Issues sorted by due date ||
-
-
-
-= Issue Tracker Activities _(Terminology)_ =
-  * *Triage:* Deciding what needs to happen for ALL live issues in the tracker.
-
-  * *Cherry Picking:* Going through fixing and closing trivial issues (i.e. quick to fix issues) so that they do not clutter up the tracker.  Often leads to trivial issues changing status (e.g. to !NeedInfo ).
-
-  * *Dredging:* Going through issues which are 6 months+ old, checking they are still valid, ensuring there is some policy in place so that they don't clog up the tracker.  Check for example that old issues which are not live have milestone 'future'.  'Dredging' can also be used for learning from closed issues, for example a spate of related invalid issues may indicate a need for some documentation changes.
-
-
-= !NeedInfo Status =
-
-  * It is very easy for an issue to get 'stuck' in !NeedsInfo status.  When changing an issue to !NeedsInfo status, it is a good idea to in the comment say what information is needed, so that it is easy to assess whether the issue is still in that status after a number of comments have arrived.
-
-Search for *[http://code.google.com/p/soc/issues/list?can=1&q=Status%3ANeedInfo&sort=id&colspec=ID+Summary NeedInfo Issues]*
-
-= Special Tags and Statuses =
-
-  * *[http://code.google.com/p/soc/issues/list?can=2&q=Label%3AVerbiage&sort=id&colspec=ID+Summary Verbiage]:* This item is a change in wording and if it also has the tag '!NeedsInfo' then likely it needs a decision on the wording to progress.
-
-  * *[http://code.google.com/p/soc/issues/list?can=2&q=Label%3ASecurity&sort=id&colspec=ID+Summary Security]:* At least some part of this issue is security related.  If a security issue is given a low priority some explanation about why it's not something to worry about will usually be given in the comments.
-
-  * *[http://code.google.com/p/soc/issues/list?can=1&q=status%3Acantfix&sort=id&colspec=ID+Summary Can't Fix]:* We won't fix this issue because it's not possible to.  This tag rarely survives long and there currently are just three 'Cant Fix' tags in the tracker. 
-
-  * *[http://code.google.com/p/soc/issues/list?can=1&q=WikiDiscuss&sort=id&colspec=ID+Summary WikiDiscuss]:* Conversation has been taken to the wiki.  If no link is given in the issue tracker comments then visit page [WikiDiscuss].
-
-  * *[http://code.google.com/p/soc/issues/list?can=2&q=&sort=dueby+id&colspec=ID%20DueBy%20Summary%20Owner%20Status DueBy-YEAR-MONTH-DAY]:* Date by which developer with issue assigned intends to have fix committed to mainline.
-
-  * *[http://code.google.com/p/soc/issues/list?can=2&q=PatchReceived&sort=id&colspec=ID+DueBy+Summary+Priority+Owner+Status PatchReceived]:* This issue has had a patch submitted. The patch is under review per these guidelines (taken from [MeetingAgendasNotes 27 April Team Meeting Notes])
-
-----
-----
-
-==Patch Reviews==
-
-We want to get a lot *better about reviewing and committing patches*. Right now we are not doing this well enough. New strategy:
-
-  # We quickly sync within 24 hours about who is going to review a patch.
-  # All patches will be ack'ed within 48 hours, which means that we say at least "hey thanks we got your patch." Person ack'ing the patch is the person who will review it.
-  # Patch will be reviewed and feedback sent to submitter and relevant issue in the tracker updated within 5 days (read: 120 hours). 
-----
-----
-
- _Add suggestions for new tags and statuses here..._
-
-=Issue Tracker Stats=
-
-||Date||[http://code.google.com/p/soc/issues/list?can=2&q=PatchReceived&sort=id&colspec=ID+DueBy+Summary+Priority+Owner+Status PatchReceived]||[http://code.google.com/p/soc/issues/list?can=2&q=Label%3ASecurity&sort=dueby+id&colspec=ID+DueBy+Summary+Owner+Status Security]||[http://code.google.com/p/soc/issues/list?can=2&q=Label%3AVerbiage&sort=id&colspec=ID+Summary Verbiage]||[http://code.google.com/p/soc/issues/list?can=1&q=Status%3ANeedInfo&sort=id&colspec=ID+Summary NeedInfo]||[http://code.google.com/p/soc/issues/list?can=1&q=status%3Acantfix&sort=id&colspec=ID+Summary CantFix]||
-||2009-May-02|| 3 || 5 || 3 || 4 || 3 ||
-||2009-May-21|| 0 || 4 || 3 || 4 || 3 ||
-
-= Related Pages =
-  * [TestingGuidelines]
-  * [PendingUserStories]
-  * [WikiDiscuss]
\ No newline at end of file
