diff --git a/MelangePlan0310.md b/MelangePlan0310.md
new file mode 100644
index 0000000..920ec8b
--- /dev/null
+++ b/MelangePlan0310.md
@@ -0,0 +1,37 @@
+# Main Improvements, Features and Fixes for Q3-Q4 '10
+
+**Under Construction, just a copy of Q1-Q2**
+
+This page lists the different tasks that Melange will focus on during the upcoming months. Note that this list is far from complete in terms of other improvements we might make and that not everything on this list (prio medium or lower) might make it into Melange before the next months are over.
+
+To be added to the list, needs to be made more tangible:
+  * Testing, Sverre suggesting getting more time for it. Chong Liu's work should help.
+
+| **Short Name** | **Description** | **Schelduled** | **Priority** | **Primary Contributors** |
+|:---------------|:----------------|:---------------|:-------------|:-------------------------|
+| Design UI Prototypes | Design and prototype new UI designs for Melange | 31 August      | High         | Mario Ferraro            |
+| User Interface Discussion | Discussion and choosing of the new interface | 6 September    | High         | All                      |
+| User Interface Implementation| Implementation of the new user interface. | TBD            | High         |                          |
+|Internal User ID as a reference|Currently, we use email address as user ID, but then if that changes we don't have a correct reference to the user anymore and we have to fix things manually. This means to update current user models in the datastore and changing the current calls to getUserForCurrentAccount to work with the ID|                |Medium        |                          |
+| JavaScript Refactoring | Refactor Melange JavaScripts to their separate module. | TBD            | Medium       | Mario Ferraro            |
+|Per Org URL for Applying|The current StudentApplication uses the student as scope. This gives non-shareable URL’s for organizations to apply on. Unless changing the datamodel to become based around Orgs becomes viable for GSoC10 (a lot of dependencies with access and accepting/rejecting applications), a good solution would also be to introduce a URL that is not user-dependent but Organization dependent.|                |Low           |                          |
+|Use HTTPS protocol for certain pages|This means enabling HTTPS for a certain set of pages such as edit pages for roles. See also Issue 445 (on Google Code).|                |Low           |                          |
+|Enhance Notifications|This includes posting the complete notification in the email sent to the user and perhaps add the possibility to read them using an RSS feed (NewsFeed framework from James Levy)|                |Low           |                          |
+|Add Surveys to the Statistics module|The Statistics modules seems like the perfect place to also handle the statistics that can be gathered from the Surveys collected within Melange.| 19 July (Depends on design) |Low           | Daniel Hans              |
+|Internationalization|The text in Melange has now become quite stable and we do have a large user base within the Asian community. We should look into the possibility of adding and enabling translations. Research might be required into languages that read from right to left.|                |Low           |                          |
+|Display changes in StudentProposals|A StudentProposal usually has multiple iterations. A request from the organizations was to make these changes more visible by somehow displaying the history of a proposal (diffs or complete histories are an idea)|GSoC 2010       |Very Low      |                          |
+
+## GHOP
+| **Short Name** | **Description** | **Status** | **Duration** | **Schelduled** | **Priority** | **Primary Contributors** |
+|:---------------|:----------------|:-----------|:-------------|:---------------|:-------------|:-------------------------|
+|~~GHOP Organization Registration~~| Check/Fix/Implement the Organization registration for GHOP Organizations, including Org Admin and Mentor invitations. | Complete   | 1 week       | 14 June        | High         | Madhusudan               |
+|~~GHOP Task Quota assignment~~| Create the page where Program Administrators can see/update the quota for each organization. Does not need to be Task API anymore because the current list can send along the keys, however it does need to scale. | Complete   | 2 weeks      | 21 June        | High         | Mario and Madhusudan     |
+|~~GHOP Task creation by org admins~~| Allow GHOP Org Admins to create tasks for their own org which can be directly published or stored for later publishing. | Complete   | 2 weeks      | 5 July         | High         | Madhusudan               |
+|~~GHOP Task suggestion by mentors, all can edit~~| Allow GHOP Mentors to suggest tasks for their organization and let the Org Admin accept/publish the task, both in bulk and on a per-task basis | Complete   | 1 week       | 12 July        | High         | Madhusudan               |
+|~~GHOP Task workflow~~| Run the current workflow from the point that a task is published till the completion of a Task. Includes, checking access to make sure that a mentor/org admin can't claim a task and someone who has claimed a task or is a Student can't become a Org Admin/Mentor. | Complete   | 2 weeks      | 13 September   | High         | Madhusudan               |
+|~~GHOP Task pages~~| Besides the per-task page there are a few more important pages to be checked/fixed/implemented. Namely the org home page with a lists of their tasks, a page with all tasks for a single program and a page for listing "My tasks" showing either the ones you have claimed or are mentoring. | Started    | 1 week       | 20 September   | High         | Madhusudan               |
+| GHOP statistics | Page to gather GHOP Statistics, might make use of the work from Mario and Daniel. Most importantly we need to know who completed what amount of tasks on a overall and per-org basis.| Not started | 2 weeks      | 27 September   | High         | Daniel and Madhusudan    |
+| ~~GHOP Notifications~~ | http://code.google.com/p/soc/issues/detail?id=921 | Complete   | 1 week       | 27 September   | High         | Madhusudan               |
+| GHOP Task work upload | Allowing uploads to be made as part of a WorkSubmission | Won't fix for GHOP 2010 | 3 weeks      | 21 November    | Medium       | Madhusudan               |
+| GHOP User Manual | There is a skeleton [GHOP User Manual in the wiki](http://code.google.com/p/soc/wiki/GHOPUserManual). This needs to include all the details and nuances about how to use GHOP module. | Started - Contributions needed | 2 weeks      | 4 October      | High         | Madhusudan and others    |
+| GHOP Testing period | Similar to the GSoC testing period we will run GHOP through its paces publicly during this time. | Not started | 2 weeks      | 11 October     | High         | All                      |
\ No newline at end of file
diff --git a/MelangePlan0310.wiki b/MelangePlan0310.wiki
deleted file mode 100644
index bf68add..0000000
--- a/MelangePlan0310.wiki
+++ /dev/null
@@ -1,37 +0,0 @@
-#summary Plan for Q3-Q4 '10
-#labels Contents-Review,Importance-Useful,Phase-Implementation
-= Main Improvements, Features and Fixes for Q3-Q4 '10 =
-
-*Under Construction, just a copy of Q1-Q2*
-
-This page lists the different tasks that Melange will focus on during the upcoming months. Note that this list is far from complete in terms of other improvements we might make and that not everything on this list (prio medium or lower) might make it into Melange before the next months are over.
-
-To be added to the list, needs to be made more tangible:
-  * Testing, Sverre suggesting getting more time for it. Chong Liu's work should help.
-
-|| *Short Name* || *Description* || *Schelduled* || *Priority* || *Primary Contributors* ||
-|| Design UI Prototypes || Design and prototype new UI designs for Melange || 31 August || High || Mario Ferraro ||
-|| User Interface Discussion || Discussion and choosing of the new interface || 6 September || High || All ||
-|| User Interface Implementation|| Implementation of the new user interface. || TBD || High || ||
-||Internal User ID as a reference||Currently, we use email address as user ID, but then if that changes we don't have a correct reference to the user anymore and we have to fix things manually. This means to update current user models in the datastore and changing the current calls to getUserForCurrentAccount to work with the ID|| ||Medium||||
-|| JavaScript Refactoring || Refactor Melange JavaScripts to their separate module. || TBD || Medium || Mario Ferraro ||
-||Per Org URL for Applying||The current StudentApplication uses the student as scope. This gives non-shareable URL’s for organizations to apply on. Unless changing the datamodel to become based around Orgs becomes viable for GSoC10 (a lot of dependencies with access and accepting/rejecting applications), a good solution would also be to introduce a URL that is not user-dependent but Organization dependent.|| ||Low|| ||
-||Use HTTPS protocol for certain pages||This means enabling HTTPS for a certain set of pages such as edit pages for roles. See also Issue 445.|| ||Low|| ||
-||Enhance Notifications||This includes posting the complete notification in the email sent to the user and perhaps add the possibility to read them using an RSS feed (NewsFeed framework from James Levy)|| ||Low|| ||
-||Add Surveys to the Statistics module||The Statistics modules seems like the perfect place to also handle the statistics that can be gathered from the Surveys collected within Melange.|| 19 July (Depends on design) ||Low|| Daniel Hans ||
-||Internationalization||The text in Melange has now become quite stable and we do have a large user base within the Asian community. We should look into the possibility of adding and enabling translations. Research might be required into languages that read from right to left.|| ||Low|| ||
-||Display changes in StudentProposals||A StudentProposal usually has multiple iterations. A request from the organizations was to make these changes more visible by somehow displaying the history of a proposal (diffs or complete histories are an idea)||GSoC 2010 ||Very Low|| ||
-
-== GHOP ==
-|| *Short Name* || *Description* || *Status* || *Duration* || *Schelduled* || *Priority* || *Primary Contributors* ||
-||~~ GHOP Organization Registration ~~|| Check/Fix/Implement the Organization registration for GHOP Organizations, including Org Admin and Mentor invitations. || Complete || 1 week || 14 June || High || Madhusudan ||
-||~~ GHOP Task Quota assignment ~~|| Create the page where Program Administrators can see/update the quota for each organization. Does not need to be Task API anymore because the current list can send along the keys, however it does need to scale. || Complete || 2 weeks || 21 June || High || Mario and Madhusudan ||
-||~~ GHOP Task creation by org admins ~~|| Allow GHOP Org Admins to create tasks for their own org which can be directly published or stored for later publishing. || Complete || 2 weeks || 5 July || High || Madhusudan ||
-||~~ GHOP Task suggestion by mentors, all can edit ~~|| Allow GHOP Mentors to suggest tasks for their organization and let the Org Admin accept/publish the task, both in bulk and on a per-task basis || Complete || 1 week || 12 July || High || Madhusudan ||
-||~~ GHOP Task workflow ~~|| Run the current workflow from the point that a task is published till the completion of a Task. Includes, checking access to make sure that a mentor/org admin can't claim a task and someone who has claimed a task or is a Student can't become a Org Admin/Mentor. || Complete || 2 weeks || 13 September || High || Madhusudan ||
-||~~ GHOP Task pages ~~|| Besides the per-task page there are a few more important pages to be checked/fixed/implemented. Namely the org home page with a lists of their tasks, a page with all tasks for a single program and a page for listing "My tasks" showing either the ones you have claimed or are mentoring. || Started || 1 week || 20 September|| High || Madhusudan ||
-|| GHOP statistics || Page to gather GHOP Statistics, might make use of the work from Mario and Daniel. Most importantly we need to know who completed what amount of tasks on a overall and per-org basis.|| Not started || 2 weeks || 27 September || High || Daniel and Madhusudan ||
-|| ~~GHOP Notifications~~ || http://code.google.com/p/soc/issues/detail?id=921 || Complete || 1 week || 27 September || High || Madhusudan ||
-|| GHOP Task work upload || Allowing uploads to be made as part of a WorkSubmission || Won't fix for GHOP 2010 || 3 weeks || 21 November || Medium || Madhusudan ||
-|| GHOP User Manual || There is a skeleton [http://code.google.com/p/soc/wiki/GHOPUserManual GHOP User Manual in the wiki]. This needs to include all the details and nuances about how to use GHOP module. || Started - Contributions needed || 2 weeks || 4 October || High || Madhusudan and others ||
-|| GHOP Testing period || Similar to the GSoC testing period we will run GHOP through its paces publicly during this time. || Not started || 2 weeks || 11 October || High || All ||
\ No newline at end of file
