diff --git a/MelangeDemos.wiki b/MelangeDemos.md
similarity index 65%
rename from MelangeDemos.wiki
rename to MelangeDemos.md
index 4c41006..8d0b9cc 100644
--- a/MelangeDemos.wiki
+++ b/MelangeDemos.md
@@ -1,105 +1,110 @@
-#summary where to find and how to use demos of work in progress
-#labels Importance-Useful,Phase-Implementation,Contents-Draft
-
-= Introduction =
+# Introduction
 
 Work in progress can be tried out on some demo instances of Melange.
 
-  * For test/demo purposes, we need more checkboxes on the dashboard.  For example the host could *enable stats collection* and they could *enable survey creation* for _all users_.  That way people interested in trying out early versions of these features can do so without first having to get host privileges from the developer(s) maintaining the demo site.
+  * For test/demo purposes, we need more checkboxes on the dashboard.  For example the host could **enable stats collection** and they could **enable survey creation** for _all users_.  That way people interested in trying out early versions of these features can do so without first having to get host privileges from the developer(s) maintaining the demo site.
 
 In the sections below:
-  * The *main link* is the URL of the appspot instance with a demo of work in progress.
-  * The *active links* tell you the URLs of pages in that appspot instance that do interesting things.
+  * The **main link** is the URL of the appspot instance with a demo of work in progress.
+  * The **active links** tell you the URLs of pages in that appspot instance that do interesting things.
 
 
-----
-----
 
-=Stats=
+---
+
+
+---
+
+
+# Stats
 
 Collection of statistical data from Melange models and presentation as pie charts, graphs etc.  The initial use is to present the pie chart showing where GSoC students come from.
 
 
-*Maintained by:* dhans, merio
+**Maintained by:** dhans, merio
 
-*Most recent Update:* 13-Aug-2009
+**Most recent Update:** 13-Aug-2009
 
-  * *Main Link*: [http://dhansmelange.appspot.com/]
-  * *Issue Tracker*: [http://bitbucket.org/dhans/statistic-module-for-melange/issues/]
-  * *Active Links*:
-    * [http://dhansmelange.appspot.com/statistic/collect_stats/google/gsoc Collect Stats Dashboard] 
-    * [http://dhansmelange.appspot.com/statistic/visualize_stats/google/gsoc/students_per_degree?visualize= 
+  * **Main Link**: http://dhansmelange.appspot.com/
+  * **Issue Tracker**: http://bitbucket.org/dhans/statistic-module-for-melange/issues/
+  * **Active Links**:
+    * [Collect Stats Dashboard](http://dhansmelange.appspot.com/statistic/collect_stats/google/gsoc)
+    * [http://dhansmelange.appspot.com/statistic/visualize_stats/google/gsoc/students_per_degree?visualize=
 
-*What's New:* (13-Aug-2009)
+**What's New:** (13-Aug-2009)
   * A lot of new statistics added.
   * Multiple statistics possible per visualization (for example Students Per Degree (all), Students Per Degree (with projects), Students Per Degree (without projects), and cumulative chart which displays the former three on a single one).
- * /statistic/visualize view for each statistic with visualizations.
- * Google Chart API visualizations.
- * Name of a widget may be changed.
+  * /statistic/visualize view for each statistic with visualizations.
+  * Google Chart API visualizations.
+  * Name of a widget may be changed.
 
-*What's New:* (09-Jul-2009)
+**What's New:** (09-Jul-2009)
   * Actual positions of widgets on the dashboard are saved on the server when the widgets move or are created or removed.
   * Newly created widgets have different random colors :-)
 
-*What's New:* (07-Jul-2009)
+**What's New:** (07-Jul-2009)
   * Widgets may be removed from dashboard or collapsed so that only widget's heading is visible
 
-*What's New:* (06-Jul-2009)
+**What's New:** (06-Jul-2009)
   * Now there are no default widgets inside. You can create one from the statistics icon, and clicking new.
   * Clicking on "students per degree" and "students per age" (surely working as I've tested them), a new widget will be created in the dashboard, and right after saved into backend, all via Ajax calls.
   * If you sign out and sign in again (or reload the page, do NOT click on "Statistics Dashboard" link again, it doesn't work for a known bug), the widgets you created will be loaded from backend (it takes few moments, a "loading" image is a TODO :))
   * Known bugs: apart from the statistics dashboard link, every widget is created and reloaded in the third column and no order is granted.
 
-*What's New:* (02-Jul-2009)
+**What's New:** (02-Jul-2009)
   * Clicking on each of statistics listed in the list of available stats in the dashboard will add a new widget with table visualization.
 
-*What's New:* (01-Jul-2009)
+**What's New:** (01-Jul-2009)
   * "New" link in the stack menu now is working, showing a thickbox with available statistics from backend.
   * Clicking on "students per degree" statistics, a new widget with a Table visualization will appear on the 3rd column based on data retrieved from backend.
   * You can create as many widgets as you want (even if always with the same data at the moment), but they're actually different objects with different IDs (as shown after "comment for:" text).
 
-*What's New:* (26-Jun-2009)
+**What's New:** (26-Jun-2009)
   * Statistics Dashboard now is shown also in Internet Explorer, Opera, Safari and Chrome
 
-*What's New:* (26-Jun-2009)
+**What's New:** (26-Jun-2009)
   * Example of Statistics Dashboard (under menu "User (self)"), with visualizations in moveable widgets (iGoogle style dashboard) and OSX Style stack menu example
 
-*What's New:* (18-Jun-2009)
+**What's New:** (18-Jun-2009)
   * Example of transclusion
 
-*What's New:* (17-Jun-2009)
+**What's New:** (17-Jun-2009)
   * Mario's Javascript code and Daniel's Python code joined
   * Now can view a Google Visualization Piechart along with the Table in the Students Per Degree page
 
-*What's New:* (16-Jun-2009)
+**What's New:** (16-Jun-2009)
   * Can collect predefined stats
-  * Can view a JSON results object 
+  * Can view a JSON results object
   * Can view a sample Google Visualization Table
 
-----
-----
 
-=Surveys=
+---
 
-Create a form based questionnaire that users can fill in.  View the results.  The initial use is for the GSoC mid-term survey and the end of GSoC survey.  
+
+---
+
+
+# Surveys
+
+Create a form based questionnaire that users can fill in.  View the results.  The initial use is for the GSoC mid-term survey and the end of GSoC survey.
 
 Potentially much of melange can be reworked to use surveys.  For example application to be a mentoring organization could be written as a survey.  This leads to less code and a design where programmers are not needed to change questions, rights and wordings on forms.
 
 
-*Maintained by:* jamtoday, ajaksu
+**Maintained by:** jamtoday, ajaksu
 
-*Most recent Update:* 12-June-2009
+**Most recent Update:** 12-June-2009
 
-*What's New:* 
-  * UI Updates using jQuery UI 
+**What's New:**
+  * UI Updates using jQuery UI
   * Can create a survey with text, choice and multi choice options.
   * Can take a survey as a user.
   * Can view a table of all survey results.
 
-  * *Main Link*: [http://jamstage.appspot.com/]
-  * *Active Links*:
+  * **Main Link**: http://jamstage.appspot.com/
+  * **Active Links**:
 
-  * Note: You must sign in and create a profile to create or take surveys. 
+  * Note: You must sign in and create a profile to create or take surveys.
 
   * Sample Student Midterm:
 
@@ -117,56 +122,64 @@
 
 
 
-  * *Sample Evaluation Survey*: [http://melange-ajaksu.appspot.com/]
+  * **Sample Evaluation Survey**: http://melange-ajaksu.appspot.com/
 
 
 
-----
-----
+
+---
 
 
-=Newsfeed Module=
+---
 
- A framework for customizable news feeds for various entity kinds that can be formatted on various site pages. Each newsfeed includes a subscription link, and through a 'subscribe' url pattern is used to render XML feeds. 
 
-Because of the relatively simple nature of the initial project, some of the post-midterm development will include an auxiliary open source pubsub component meant to be deployed separately, and act as a hub allowing Melange instances to host chat, Google Wave updates, and other real-time activity. 
 
-*Maintained by:* jamtoday
+# Newsfeed Module
 
-*Most recent Update:* 12-June-2009
+> A framework for customizable news feeds for various entity kinds that can be formatted on various site pages. Each newsfeed includes a subscription link, and through a 'subscribe' url pattern is used to render XML feeds.
 
-*What's New:* 
+Because of the relatively simple nature of the initial project, some of the post-midterm development will include an auxiliary open source pubsub component meant to be deployed separately, and act as a hub allowing Melange instances to host chat, Google Wave updates, and other real-time activity.
+
+**Maintained by:** jamtoday
+
+**Most recent Update:** 12-June-2009
+
+**What's New:**
   * Newsfeed renders for Programs, Groups, Organizations for many types of updates.
-  * XML link and 'subscribe' URL pattern. 
+  * XML link and 'subscribe' URL pattern.
 
-  * *Main Link*: [http://jamstage.appspot.com/]
-  * *Active Links*:
+  * **Main Link**: http://jamstage.appspot.com/
+  * **Active Links**:
     * site/show/site (example of HTML news feed)
     * site/subscribe/site (example of XML news feed)
 
 
-----
-----
+
+---
 
 
-=GHOP=
+---
 
-Task-based work flow for Google-Highly-Open-Participation contest.  Define tasks, tag them, set difficulty levels, track students' progress.  
 
-*Maintained by:* madhusudan
 
-*Most recent Update:* 23-Junee-2009
+# GHOP
 
-*What's New:* .
+Task-based work flow for Google-Highly-Open-Participation contest.  Define tasks, tag them, set difficulty levels, track students' progress.
+
+**Maintained by:** madhusudan
+
+**Most recent Update:** 23-Junee-2009
+
+**What's New:** .
   * Can create GHOP Program
   * Can create GHOP Organizations and assign task quota limits to the active ones.
   * Can create GHOP Org Admins and Mentors
 
-  * *Main Link*: [http://melange-madhusudancs.appspot.com/]
-  * *Active Links*: _please put the real links here_ 
+  * **Main Link**: http://melange-madhusudancs.appspot.com/
+  * **Active Links**: _please put the real links here_
     * (better to use the sidebar than links. Please help me test it. If you want developer access to the instance please ping me on my ID: madhusudancs@gmail.com)
 
-*What's New:* (1-Jul-2009)
+**What's New:** (1-Jul-2009)
   * Org Admins create Tasks
   * Mentors create tasks, edit them.
   * Org Admins edit tasks, along with it, can approve tasks if not created by Org Admins, Publish their own tasks and tasks created by mentors, Approve and Publish the tasks in one go, for the tasks not created by mentors.
@@ -175,4 +188,4 @@
 
 _(Important Note, Assign mentors field exist in the OA edit view but is not functional at the moment, it will be in the next update. I wanted to put this instance to testing before any delays and did not wait till it got completed. Not difficult though, I just want to integrate jQuery autocomplete for this field, which is already in our code base which is taking some time.)_
 
-*Also for those who are interested in seeing the code or reviewing it, I have maintained all my code as a patchset at [http://bitbucket.org/madhusudancs/melange-mq/]. Please feel free to take a look. Also any bugs or issues you find while testing, kindly report at the issue tracker on the repository [http://bitbucket.org/madhusudancs/melange-mq/issues/]. It will help me keep track of the issues.*
\ No newline at end of file
+**Also for those who are interested in seeing the code or reviewing it, I have maintained all my code as a patchset at http://bitbucket.org/madhusudancs/melange-mq/. Please feel free to take a look. Also any bugs or issues you find while testing, kindly report at the issue tracker on the repository http://bitbucket.org/madhusudancs/melange-mq/issues/. It will help me keep track of the issues.**
\ No newline at end of file
