diff --git a/MelangePlan0110.md b/MelangePlan0110.md
new file mode 100644
index 0000000..77235b6
--- /dev/null
+++ b/MelangePlan0110.md
@@ -0,0 +1,27 @@
+# Main Improvements, Features and Fixes for Q1-Q2 '10
+
+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.
+
+
+| **Short Name** | **Description** | **Schelduled** | **Priority** | **Primary Contributors** |
+|:---------------|:----------------|:---------------|:-------------|:-------------------------|
+| ~~Complete the Module Overhaul~~ |The new module system requires significant changes to our datamodels. These changes need to be rolled out using the GAE Task API on the live socghop server.|December 15, 2009|Very High     |Sverre Rabbelier and Lennard de Rijk|
+|~~Putting Old Programs in Freeze mode~~|Although currently the inactive state is available for a program it does not yet put everything that has to do with the program into a state where the data can no longer be changed. Thought needs to go out to making sure the data is still available but not editable.|December 28, 2009|Very High     |Daniel Hans and Lennard de Rijk|
+|~~New Organization Application Format~~|Extending the current Survey implementation with a new type of Survey to handle Organization Applications.|January 18, 2010|Very High     |Lennard de Rijk           |
+|~~~Issue 201 (on Google Code)~~~|Implementing a searchable list that allows the user to fetch more then 1000 entities and sort on any column. Also this list should allow post operations on certain rows of the table.|January 18, 2010|High          |Sverre Rabbelier and Mario Ferraro|
+|~~Taggable Organizations~~|Add tags to Organizations. At least two different tags are needed, programming language tags and arbitrary tags. The programming language tags might have to be preset or have some form of autocompletion to ensure that organizations fall under the same tag wether they use C++ or c++ as spelling. This also includes adding a page on which the organizations are grouped under their tags.|February 15, 2010|Medium        |Daniel Hans               |
+|~~Finding duplicate accepted proposals using the Task API~~|Currently duplicate finding happens using async HTTP requests, this can now be done using the GAE Task API. This also makes it possible to automatically schedule the duplicate finding task to happen and semi-live update the lists for organizations. So that they can have more direct feedback on their students. (Note that this latter needs to be checked with LH).|February 15, 2009|High          |Madhusudan C.S.           |
+|~~Org Application Processing using Task API~~|The current OrgApplication processing happens using async HTTP requests. Thanks to the introduction of the GAE Task API this can now be done more user friendly :).|February 22, 2010|High          |Lennard de Rijk           |
+|~~Slot Assignment using Task API~~| The current slot assignment algorithm does not use the GAE Task API, this needs to be rewritten. The slot assignment algorithm helps to determine the amount of slots each organization will get. |February 22, 2010|High          |Sverre Rabbelier          |
+| ~~Project Acceptance using Task API~~ | Accepting proposals and turning them into projects required use of the remote API. The Task API will allow us to get rid of using the remote API and allow this to happen with a press of a single button. |February 22, 2010|High          |Sverre Rabbelier          |
+| ~~GSoC Testing Period~~ |As requested by the Organizations we will run the complete GSoC in 2 weeks to gather feedback and see if the system is ready.|February 22, 2010|Very High     |Sverre Rabbelier and Lennard de Rijk|
+|~~StudentProposal Scoring Improvements~~|Allow the Org admins to lock out mentors from scoring proposals and add a way to directly influence the rank of a StudentProposal on the page that lists all these applications instead of only on the per-proposal page. This last might be achieved by using up/down arrows.|February 22, 2010|Medium        |Daniel Hans               |
+|~~Make GradingSurveyGroup available to Hosts~~|Add the GradingSurveyGroup pages to the menu structure and ensure that Hosts are able to view them correctly.|July 1, 2010    |Medium        |Lennard de Rijk           |
+|Improve the navigational structure|The current sidebar has grown over the last year to become a huge list. New (realistic) ideas are welcome on how to improve the navigational structure to accommodate for the large functionality we offer.|Discussion Topic|Medium        |                          |
+|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           |                          |
+|~~Statistics Module Integration~~|Integrate the statistics module backend to work with the new module system. Also includes integrating the frontends for the hosts and users.|                |Low           |Daniel Hans               |
+|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.|                |Low           |                          |
+|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      |                          |
\ No newline at end of file
diff --git a/MelangePlan0110.wiki b/MelangePlan0110.wiki
deleted file mode 100644
index 402ac0a..0000000
--- a/MelangePlan0110.wiki
+++ /dev/null
@@ -1,28 +0,0 @@
-#summary Plan for Q1-Q2 '10
-#labels Importance-Useful,Phase-Implementation,Contents-Complete
-= Main Improvements, Features and Fixes for Q1-Q2 '10 =
-
-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.
-
-
-|| *Short Name* || *Description* || *Schelduled* || *Priority* || *Primary Contributors* ||
-|| ~~Complete the Module Overhaul~~ ||The new module system requires significant changes to our datamodels. These changes need to be rolled out using the GAE Task API on the live socghop server.||December 15, 2009||Very High||Sverre Rabbelier and Lennard de Rijk||
-||~~Putting Old Programs in Freeze mode~~||Although currently the inactive state is available for a program it does not yet put everything that has to do with the program into a state where the data can no longer be changed. Thought needs to go out to making sure the data is still available but not editable.||December 28, 2009||Very High||Daniel Hans and Lennard de Rijk||
-||~~New Organization Application Format~~||Extending the current Survey implementation with a new type of Survey to handle Organization Applications.||January 18, 2010||Very High||Lennard de Rijk||
-||~~~Issue 201~~~||Implementing a searchable list that allows the user to fetch more then 1000 entities and sort on any column. Also this list should allow post operations on certain rows of the table.||January 18, 2010||High||Sverre Rabbelier and Mario Ferraro||
-||~~Taggable Organizations~~||Add tags to Organizations. At least two different tags are needed, programming language tags and arbitrary tags. The programming language tags might have to be preset or have some form of autocompletion to ensure that organizations fall under the same tag wether they use C++ or c++ as spelling. This also includes adding a page on which the organizations are grouped under their tags.||February 15, 2010||Medium||Daniel Hans||
-||~~Finding duplicate accepted proposals using the Task API~~||Currently duplicate finding happens using async HTTP requests, this can now be done using the GAE Task API. This also makes it possible to automatically schedule the duplicate finding task to happen and semi-live update the lists for organizations. So that they can have more direct feedback on their students. (Note that this latter needs to be checked with LH).||February 15, 2009||High||Madhusudan C.S.||
-||~~Org Application Processing using Task API~~||The current OrgApplication processing happens using async HTTP requests. Thanks to the introduction of the GAE Task API this can now be done more user friendly :).||February 22, 2010||High||Lennard de Rijk||
-||~~Slot Assignment using Task API~~|| The current slot assignment algorithm does not use the GAE Task API, this needs to be rewritten. The slot assignment algorithm helps to determine the amount of slots each organization will get. ||February 22, 2010||High||Sverre Rabbelier||
-|| ~~Project Acceptance using Task API~~ || Accepting proposals and turning them into projects required use of the remote API. The Task API will allow us to get rid of using the remote API and allow this to happen with a press of a single button. ||February 22, 2010||High||Sverre Rabbelier||
-|| ~~GSoC Testing Period~~ ||As requested by the Organizations we will run the complete GSoC in 2 weeks to gather feedback and see if the system is ready.||February 22, 2010||Very High||Sverre Rabbelier and Lennard de Rijk||
-||~~StudentProposal Scoring Improvements~~||Allow the Org admins to lock out mentors from scoring proposals and add a way to directly influence the rank of a StudentProposal on the page that lists all these applications instead of only on the per-proposal page. This last might be achieved by using up/down arrows.||February 22, 2010||Medium||Daniel Hans ||
-||~~Make GradingSurveyGroup available to Hosts~~||Add the GradingSurveyGroup pages to the menu structure and ensure that Hosts are able to view them correctly.||July 1, 2010||Medium||Lennard de Rijk||
-||Improve the navigational structure||The current sidebar has grown over the last year to become a huge list. New (realistic) ideas are welcome on how to improve the navigational structure to accommodate for the large functionality we offer.||Discussion Topic||Medium||||
-||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|| ||
-||~~Statistics Module Integration~~||Integrate the statistics module backend to work with the new module system. Also includes integrating the frontends for the hosts and users.|| ||Low||Daniel Hans ||
-||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.|| ||Low|| ||
-||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|| ||
\ No newline at end of file
