diff --git a/GSoC2013Ideas.wiki b/GSoC2013Ideas.md
similarity index 68%
rename from GSoC2013Ideas.wiki
rename to GSoC2013Ideas.md
index 7d0dec2..94108a0 100644
--- a/GSoC2013Ideas.wiki
+++ b/GSoC2013Ideas.md
@@ -1,50 +1,47 @@
-#summary Ideas List for GSoC 2013
-#labels Importance-Useful,Featured
+**Melange** is the software that powers Google Summer of Code. If improving the way that Google Summer of Code is run as your Google Summer of Code project sounds attractively recursive, please read on!
 
-*Melange* is the software that powers Google Summer of Code. If improving the way that Google Summer of Code is run as your Google Summer of Code project sounds attractively recursive, please read on!
-
-= Ideas! =
+# Ideas!
 
 We welcome your ideas, whatever they might be for Melange - but here are a few of our own for what we think might be good student summer projects:
 
-== Developer Workflow Improvements ==
+## Developer Workflow Improvements
 
 In the last year Melange has gotten serious about mature software development practices, but our work in this area is far from complete. A project oriented around developer workflow would involve removing derived assets from source control, making derivation of those derived assets part of our build process, and running static analysis tools such as lint and documentation extraction over our source code.
 
-*Relevant Skills:* Python, <a href="http://www.buildout.org/">Buildout</a>
+**Relevant Skills:** Python, <a href='http://www.buildout.org/'>Buildout</a>
 
-*Probable Mentor:* Nathaniel Manista
+**Probable Mentor:** Nathaniel Manista
 
-== Integration of Summer of Code's "Connections" subsystem with Code-in. ==
+## Integration of Summer of Code's "Connections" subsystem with Code-in.
 
 Melange recently gained a "Connections" subsystem for building relationships between participants, but Connections is only integrated with Summer of Code, one of the two programs that Melange powers. Empowering Code-in with Connections would be a suitable student effort.
 
-*Relevant Skills:* Python, HTML
+**Relevant Skills:** Python, HTML
 
-*Probable Mentor:* _undecided_
+**Probable Mentor:** _undecided_
 
-== Javascript Tests == 
+## Javascript Tests
 
 Melange has a great deal of Javascript code that needs to be extracted from templates and other hiding holes, refined, and tested.
 We already have a testing architecture in place (using Testem, Jasmine, PhantomJS) but we need to start writing tests.
 
-*Relevant Skills:* Javascript
+**Relevant Skills:** Javascript
 
-*Probable Mentor:* Mario Ferraro (Merio on #melange)
+**Probable Mentor:** Mario Ferraro (Merio on #melange)
 
-*Links to relevant threads in the mailing list*: <a href="https://groups.google.com/d/topic/melange-soc-dev/FtVJXiqLmOA/discussion">Thread 1</a>
+**Links to relevant threads in the mailing list**: <a href='https://groups.google.com/d/topic/melange-soc-dev/FtVJXiqLmOA/discussion'>Thread 1</a>
 
-== Javascript List Enhancements ==
+## Javascript List Enhancements
 
 Our current lists are always asynchronous and load some time after the page on which they are displayed is loaded. They should be enhanced to be able to be included in the page and viewed statically when as the server deems appropriate. This work would cover both client and server domains and would make use of Javascript, Python, HTML and CSS.
 
-*Relevant Skills:* Javascript, Python, HTML and CSS
+**Relevant Skills:** Javascript, Python, HTML and CSS
 
-*Probable Mentor:* Mario Ferraro (Merio on #melange)
+**Probable Mentor:** Mario Ferraro (Merio on #melange)
 
-*Links to relevant threads in the mailing list*: <a href="https://groups.google.com/d/topic/melange-soc-dev/l5CdVZ7ammw/discussion">Thread 1</a>
+**Links to relevant threads in the mailing list**: <a href='https://groups.google.com/d/topic/melange-soc-dev/l5CdVZ7ammw/discussion'>Thread 1</a>
 
-== Functional Tests Focusing on Behavior-Driven Development ==
+## Functional Tests Focusing on Behavior-Driven Development
 
 Following last few years' successful GSoC projects on testing, our focus is mainly on behavior-driven development (BDD) this year. Although Melange is already a relatively mature project, such a technique is still useful to us. First, the biggest obstacles for writing tests is the drudgery taken to write one, so people just don't bother to do so, though they clearly know the importance of testing. The xunit testing framework pioneered by Kent Beck and Erich Gamma has made writing tests much easier. BDD, in my opinion, is another step to reduce the barrier by allowing people to write test cases in a natural language like manner. Second, the natural language like syntax also opens the door for non programmers to write test cases. In the context of Melange, they may include program hosts and other users. Last but not least, when a user requests a new feature, they can use the Domain-specific language (DSL) to describe their needs more accurately, which will also serve as a contract/test cases for development. Thus, it is only needed to be written once but can be used in multiple stages of the project life cycle and also a win-win for both users and developers.
 
@@ -63,49 +60,46 @@
 https://code.google.com/p/soc/issues/list
 
 The code of Melange are structured in the following way:
-* The main code is in app/soc.
-* The tests are in tests.
-* Unit tests are organized in the way similar to the main code.
-* The test utils are tests/*_utils.py
-* The existing functional testing infrastructures and tests written by Syed are in the functional_testing branch.
+**The main code is in app/soc.** The tests are in tests.
+**Unit tests are organized in the way similar to the main code.** The test utils are tests/_**utils.py** The existing functional testing infrastructures and tests written by Syed are in the functional\_testing branch._
 
 If you have questions not answered here or other wiki pages, please feel free to ask on the mailing list melange-soc-dev@googlegroups.com.
 
-*Relevant Skills:* Python, BDD, Selenium
+**Relevant Skills:** Python, BDD, Selenium
 
-*Probable Mentor:* Chong Liu (Leo)
+**Probable Mentor:** Chong Liu (Leo)
 
-*Links to relevant threads in the mailing list*: <a href="https://groups.google.com/d/topic/melange-soc-dev/XHGiLUxBlkM/discussion">Thread 1</a>
+**Links to relevant threads in the mailing list**: <a href='https://groups.google.com/d/topic/melange-soc-dev/XHGiLUxBlkM/discussion'>Thread 1</a>
 
-== Enhanced Registration Workflow ==
+## Enhanced Registration Workflow
 
 Registering for Melange is too hard and requires too much developer and administrator intervention. This user experience can be greatly smoothed!
 
-*Relevant Skills:* Python, HTML, CSS
+**Relevant Skills:** Python, HTML, CSS
 
-*Probable Mentor:* _undecided_
+**Probable Mentor:** _undecided_
 
-== Messaging System ==
+## Messaging System
 
 Melange has a need to proxy messages between participants (because Code-in participants are minors who may not be able to reveal their email addresses). Melange should be able to mediate communication between all program participants regardless of constraints about physical location and email availability.
 
 This project has a few stages:
 
-  # design data model to store messages
-  # define logic to send messages
-  # add all necessary views to send/read/(reply to?) messages
-  # support email notifications for messages
+  1. design data model to store messages
+  1. define logic to send messages
+  1. add all necessary views to send/read/(reply to?) messages
+  1. support email notifications for messages
 
-Please note that the scope of the project is not just a feature which allows user A to send a message to user B. It should be able to deal with difference groups. Each user, depending on their role should be able to send messages to different groups. For example, an Organization Administrator may want to send a message to: all the mentors for their organization, all the students who submitted a proposal to their organization, all the students who work on a project to their organization, etc. 
+Please note that the scope of the project is not just a feature which allows user A to send a message to user B. It should be able to deal with difference groups. Each user, depending on their role should be able to send messages to different groups. For example, an Organization Administrator may want to send a message to: all the mentors for their organization, all the students who submitted a proposal to their organization, all the students who work on a project to their organization, etc.
 
 On the other hand, it is important to be able to determine, for each user, what messages are interesting/sent to her. Proper data model design is crucial for this project and there is no much point in moving on to the next step until all arisen questions have been answered.
 
-*Relevant Skills:* Python, App Engine
+**Relevant Skills:** Python, App Engine
 
-*Probable Mentor:* Daniel Hans
+**Probable Mentor:** Daniel Hans
 
-= Orientation =
+# Orientation
 
-We would like our prospective students to propose new project ideas and discuss with Melange developers either here (in comments), #melange on freenode.net, or via our mailing list melange-soc-dev@googlegroups.com. 
+We would like our prospective students to propose new project ideas and discuss with Melange developers either here (in comments), #melange on freenode.net, or via our mailing list melange-soc-dev@googlegroups.com.
 
-Every student is encouraged to clone our <a href="http://code.google.com/p/soc/source/checkout>git repository</a>, solve <a href="http://code.google.com/p/soc/issues/list">issues</a> and submit patches as part of the application process. <a href="http://code.google.com/p/soc/wiki/GettingStarted">Here</a> is our getting started guide.
\ No newline at end of file
+Every student is encouraged to clone our <a href='http://code.google.com/p/soc/source/checkout'>git repository</a>, solve <a href='http://code.google.com/p/soc/issues/list'>issues</a> and submit patches as part of the application process. <a href='http://code.google.com/p/soc/wiki/GettingStarted'>Here</a> is our getting started guide.
\ No newline at end of file
