diff --git a/UserStoryGroups.md b/UserStoryGroups.md
new file mode 100644
index 0000000..3c0617e
--- /dev/null
+++ b/UserStoryGroups.md
@@ -0,0 +1,91 @@
+Melange [User stories](http://code.google.com/p/soc/issues/list?sort=-id) need to be grouped to spot common themes, so that we avoid writing 'the same code' many times over in different disguises.  A first try at grouping the user stories is done here.
+
+## Stories Presenting Read-Only Pages
+
+Story 28, 'creating a page' is one story which leads in to many others.  Once [a new page is created](GenericPages.md) by the host, it is read only, at least for most readers.  The created page can include a table.  The author chooses what table, what fields from that table and what formatting.
+
+  * Melange will need many read only pages which present the results of a 'query'. Stories 8,9,28,35,36,40,41,43,54,55,56 could be implemented using one generic technique for creating pages.
+  * Story 20 and 19 are about looking up information.  A read-only table with an alphabetical list of 'linknames' with corresponding e-mail addresses could provide these.
+  * The original 'Story 28' was written as being only for 'hosts'.  This ability to create custom pages for their organisation could be given to 'org admins' too, using the same code.
+
+
+|ID|For|Summary|
+|:-|:--|:------|
+|Issue 8 (on Google Code)|Summit|Hosts need to be able to set basic Program home page content|
+|Issue 9 (on Google Code)|GSoC|Hosts need to be able to specify feed URLs for Program home pages|
+|Issue 28 (on Google Code)|Summit|Hosts should be able to create per-Program Documents|
+|Issue 35 (on Google Code)|Summit|"program name" links for Active Programs on User Roles page should point to per-Program home page|
+|Issue 36 (on Google Code)|GSoC|"program name" links for past Programs on User Roles page should point to per-Program history pages|
+|Issue 40 (on Google Code)|Summit|"org name" links in Active Programs on User Roles page should point to per-Program per-Org home page|
+|Issue 41 (on Google Code)|GSoC|"org name" links in past Programs on User Roles page should point to per-Program, per-Org history pages|
+|Issue 43 (on Google Code)|GSoC|User Roles page should link to historical read-only view of past Roles|
+|Issue 54 (on Google Code)|Summit|Task list view|
+|Issue 55 (on Google Code)|GHOP|Each GHOP org needs a list of tasks|
+|Issue 56 (on Google Code)|GHOP|GHOP students need a task list|
+|Issue 20 (on Google Code)|GHOP|"Public" information should be used to look up Users|
+|Issue 19 (on Google Code)|Summit|Hosts and site admins should be able to look up Users by Google Account|
+
+
+## Questionnaire Stories
+
+Stories 21, 22, 23, 26, 29, 57 are all about creating or answering QuestionnairePages.
+
+  * Some questionnaires have a 'finalise' step - there's no going back after the step.  If you're a potential mentor organisation applying to google, you can't edit your responses after you click submit.  A similar thing happens when you accept terms of service.  With that feature as part of making a questionnaire we can add stories 24, 30 and 42 to this group.
+
+> [Google forms](http://spreadsheets.google.com/newform) provides a good interface for creating questionnaires.  It's worth looking in some detail at the differences between what it provides and what we need.
+
+
+|ID|For|Summary|
+|:-|:--|:------|
+|Issue 21 (on Google Code)|Summit|Authors need to be able to create Questionnaires|
+|Issue 22 (on Google Code)|Summit|Users need to be able to create a Response to a Questionnaire|
+|Issue 23 (on Google Code)|GHOP|Site admins should be able to create a Terms of Service "Questionnaire"|
+|Issue 26 (on Google Code)|GHOP|Hosts should be able to create per-Program Terms of Service "Questionnaires"|
+|Issue 29 (on Google Code)|Summit|Hosts should be able to create per-Program Organization Application "Questionnaires"|
+|Issue 57 (on Google Code)|GSoC|Hosts of a GHOP Program create the Task template|
+|Issue 24 (on Google Code)|Summit|Users need to agree to a site-wide Terms of Service|
+|Issue 30 (on Google Code)|GHOP|User can apply per-Program to create an organization|
+|Issue 42 (on Google Code)|GHOP|Users need to agree to per-Program Terms of Service or Contest Rules|
+
+
+## ACL Related Stories
+
+The difficulty of stories 1,4,5,6,7,15,17,31,32,33,37 is mainly in the logic for who has the rights to do what.  This needs to be cleanly factored in the design.  See AccessControl for details and discussion.
+
+|ID|For|Summary|
+|:-|:--|:------|
+|Issue 1 (on Google Code)|GHOP|Claiming a Task|
+|Issue 4 (on Google Code)|Summit|Site administrators need to be able to create Sponsor organization profiles|
+|Issue 5 (on Google Code)|Summit|Site administrators need to be able to designate Users as Hosts in a Sponsor organization|
+|Issue 6 (on Google Code)|Summit|Users who have been given Host roles by site administrators need to complete a profile|
+|Issue 7 (on Google Code)|Summit|Hosts need to be able to create a new Program|
+|Issue 15 (on Google Code)|GHOP|Documents should have Role-based access control lists|
+|Issue 17 (on Google Code)|GSoC|Hosts need to be able to nominate new Hosts|
+|Issue 31 (on Google Code)|GHOP|Hosts need to be able to review and approve Organization Applications|
+|Issue 32 (on Google Code)|Summit|User Roles page should display Pending Roles|
+|Issue 33 (on Google Code)|GHOP|User Roles page should display Potential New Roles|
+|Issue 37 (on Google Code)|Summit|User Roles page should display Active Roles|
+
+
+## Media Specific Stories
+
+This group, 13,16,25,34,52 involves features such as e-mail and image upload which do not lend themselves to generic approaches.
+
+
+|ID|For|Summary|
+|:-|:--|:------|
+|Issue 13 (on Google Code)|GHOP|Opt-in email should be available to communicate certain events|
+|Issue 16 (on Google Code)|GSoC|Role-specific feeds should be provided for events|
+|Issue 25 (on Google Code)|GSoC|An image upload/crop/scale/accept view is needed|
+|Issue 34 (on Google Code)|GSoC|User Roles page may need a tabbed or tree interface|
+|Issue 52 (on Google Code)|GSoC|Hosts should be able to attach date-sensitive reminders to evaluations|
+
+
+## Profile Stories
+Stories 38 and 39 are to ensure profiles work well.
+
+
+|ID|For|Summary|
+|:-|:--|:------|
+|Issue 38 (on Google Code)|GSoC|Changing a per-Role profile in an active Role should offer to update other Roles|
+|Issue 39 (on Google Code)|GSoC|The profile for a new User Role should be prepopulated|
\ No newline at end of file
diff --git a/UserStoryGroups.wiki b/UserStoryGroups.wiki
deleted file mode 100644
index 69699f0..0000000
--- a/UserStoryGroups.wiki
+++ /dev/null
@@ -1,89 +0,0 @@
-#summary Common Features in User Stories
-#labels Importance-Useful,Phase-Requirements
-
-Melange [http://code.google.com/p/soc/issues/list?sort=-id User stories] need to be grouped to spot common themes, so that we avoid writing 'the same code' many times over in different disguises.  A first try at grouping the user stories is done here.
-
-==Stories Presenting Read-Only Pages==
-
-Story 28, 'creating a page' is one story which leads in to many others.  Once [GenericPages a new page is created] by the host, it is read only, at least for most readers.  The created page can include a table.  The author chooses what table, what fields from that table and what formatting.
-
-  * Melange will need many read only pages which present the results of a 'query'. Stories 8,9,28,35,36,40,41,43,54,55,56 could be implemented using one generic technique for creating pages. 
-  * Story 20 and 19 are about looking up information.  A read-only table with an alphabetical list of 'linknames' with corresponding e-mail addresses could provide these.
-  * The original 'Story 28' was written as being only for 'hosts'.  This ability to create custom pages for their organisation could be given to 'org admins' too, using the same code.
-
-
-||ID||For||Summary||
-||Issue 8||Summit||Hosts need to be able to set basic Program home page content||
-||Issue 9||GSoC||Hosts need to be able to specify feed URLs for Program home pages||
-||Issue 28||Summit||Hosts should be able to create per-Program Documents||
-||Issue 35||Summit||"program name" links for Active Programs on User Roles page should point to per-Program home page||
-||Issue 36||GSoC||"program name" links for past Programs on User Roles page should point to per-Program history pages||
-||Issue 40||Summit||"org name" links in Active Programs on User Roles page should point to per-Program per-Org home page||
-||Issue 41||GSoC||"org name" links in past Programs on User Roles page should point to per-Program, per-Org history pages||
-||Issue 43||GSoC||User Roles page should link to historical read-only view of past Roles||
-||Issue 54||Summit||Task list view||
-||Issue 55||GHOP||Each GHOP org needs a list of tasks||
-||Issue 56||GHOP||GHOP students need a task list||
-||Issue 20||GHOP||"Public" information should be used to look up Users||
-||Issue 19||Summit||Hosts and site admins should be able to look up Users by Google Account||
-
-
-==Questionnaire Stories==
-
-Stories 21, 22, 23, 26, 29, 57 are all about creating or answering QuestionnairePages. 
- 
-  * Some questionnaires have a 'finalise' step - there's no going back after the step.  If you're a potential mentor organisation applying to google, you can't edit your responses after you click submit.  A similar thing happens when you accept terms of service.  With that feature as part of making a questionnaire we can add stories 24, 30 and 42 to this group.
-
-  [http://spreadsheets.google.com/newform Google forms] provides a good interface for creating questionnaires.  It's worth looking in some detail at the differences between what it provides and what we need.
-
-
-||ID||For||Summary||
-||Issue 21||Summit||Authors need to be able to create Questionnaires||
-||Issue 22||Summit||Users need to be able to create a Response to a Questionnaire||
-||Issue 23||GHOP||Site admins should be able to create a Terms of Service "Questionnaire"||
-||Issue 26||GHOP||Hosts should be able to create per-Program Terms of Service "Questionnaires"||
-||Issue 29||Summit||Hosts should be able to create per-Program Organization Application "Questionnaires"||
-||Issue 57||GSoC||Hosts of a GHOP Program create the Task template||
-||Issue 24||Summit||Users need to agree to a site-wide Terms of Service||
-||Issue 30||GHOP||User can apply per-Program to create an organization||
-||Issue 42||GHOP||Users need to agree to per-Program Terms of Service or Contest Rules||
-
-
-==ACL Related Stories==
-
-The difficulty of stories 1,4,5,6,7,15,17,31,32,33,37 is mainly in the logic for who has the rights to do what.  This needs to be cleanly factored in the design.  See AccessControl for details and discussion.
-
-||ID||For||Summary||
-||Issue 1||GHOP||Claiming a Task||
-||Issue 4||Summit||Site administrators need to be able to create Sponsor organization profiles||
-||Issue 5||Summit||Site administrators need to be able to designate Users as Hosts in a Sponsor organization||
-||Issue 6||Summit||Users who have been given Host roles by site administrators need to complete a profile||
-||Issue 7||Summit||Hosts need to be able to create a new Program||
-||Issue 15||GHOP||Documents should have Role-based access control lists||
-||Issue 17||GSoC||Hosts need to be able to nominate new Hosts||
-||Issue 31||GHOP||Hosts need to be able to review and approve Organization Applications||
-||Issue 32||Summit||User Roles page should display Pending Roles||
-||Issue 33||GHOP||User Roles page should display Potential New Roles||
-||Issue 37||Summit||User Roles page should display Active Roles||
-
-
-==Media Specific Stories==
-
-This group, 13,16,25,34,52 involves features such as e-mail and image upload which do not lend themselves to generic approaches.
-
-
-||ID||For||Summary||
-||Issue 13||GHOP||Opt-in email should be available to communicate certain events||
-||Issue 16||GSoC||Role-specific feeds should be provided for events||
-||Issue 25||GSoC||An image upload/crop/scale/accept view is needed||
-||Issue 34||GSoC||User Roles page may need a tabbed or tree interface||
-||Issue 52||GSoC||Hosts should be able to attach date-sensitive reminders to evaluations||
-
-
-==Profile Stories==
-Stories 38 and 39 are to ensure profiles work well.  
-
-
-||ID||For||Summary||
-||Issue 38||GSoC||Changing a per-Role profile in an active Role should offer to update other Roles||
-||Issue 39||GSoC||The profile for a new User Role should be prepopulated||
\ No newline at end of file
