diff --git a/NewsfeedModule.wiki b/NewsfeedModule.md
similarity index 60%
rename from NewsfeedModule.wiki
rename to NewsfeedModule.md
index 68d3e12..1c253b5 100644
--- a/NewsfeedModule.wiki
+++ b/NewsfeedModule.md
@@ -1,44 +1,41 @@
-#summary 'Sandworm' Newsfeed Module
-#labels Importance-Useful,Phase-Requirements,Contents-Draft
+[Source Code Repository](http://github.com/jamslevy/Melange/tree/master)
 
-[http://github.com/jamslevy/Melange/tree/master Source Code Repository]
 
-<wiki:toc max_depth="3" />
 
-= Introduction =
+# Introduction
 
- 	 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. 
+> 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. 
+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.
 
-= Newsfeed Model =
+# Newsfeed Model
 
 An individual FeedItem entity is created for each news feed update. A garbage collection task will delete old feed items, so they don't take over the datastore.
 
 The FeedItem model contains the following properties:
 
- * *sender* (db.Key) - The sender is the entity that was updated
+  * **sender** (db.Key) - The sender is the entity that was updated
 
- * *receivers* (db.Key) - A list of entities whose news feed is being updated. 
+  * **receivers** (db.Key) - A list of entities whose news feed is being updated.
 
- * *update_type* (created, deleted, modified)
+  * **update\_type** (created, deleted, modified)
 
- * *created* (datetime)
+  * **created** (datetime)
 
-A FeedItem is created for each sender-receiver pair. For instance, if a document is created and saved, it is the sender while its associated project and program and user could all be receivers. 
+A FeedItem is created for each sender-receiver pair. For instance, if a document is created and saved, it is the sender while its associated project and program and user could all be receivers.
 
-= Access Protection =
+# Access Protection
 
 Very basic entity information (a title/name and a link) is shown in the Recent Updates box and the ATOM feed. This may violate access protection, and the alternative is to just show the name of the entity kind, or a truncated title.
 
 Because the mail subscriptions are privately sent on a per-user basis, they contain more detailed information about the updated entity.
 
-= Logic =
+# Logic
 
 Newsfeed logic consists of two public methods:
- 
- * *addToFeed* takes a sender entity, a list of receiver entities, an update type, and an optional payload (like a text preview of a document). It adds all the receivers to a FeedItem with the specified payload:
-{{{
+
+  * **addToFeed** takes a sender entity, a list of receiver entities, an update type, and an optional payload (like a text preview of a document). It adds all the receivers to a FeedItem with the specified payload:
+```
     for receiver in receivers:
       new_feed_item = soc.models.news_feed.FeedItem( 
       sender_key= str(sender.key()),     
@@ -46,94 +43,96 @@
       user = user,
       update_type = update_type
       )
-}}}
+```
 
- * *retrieveFeed* takes a receiever entity, and retrieves it's latest news feed updates, with an optional count kwarg. This method is cached, with a cache handler in the /cache folder. 
+  * **retrieveFeed** takes a receiever entity, and retrieves it's latest news feed updates, with an optional count kwarg. This method is cached, with a cache handler in the /cache folder.
 
-{{{
+```
   def retrieveFeed(self, entity, count=10):
     """ Retrieves feed for a given entity 
     """
     feed_items = soc.models.news_feed.FeedItem.all().filter(
     "receiver_key =", str(entity.key())).fetch(1000)
     return feed_items[:count]
-}}}
+```
 
 
-= Views =
+# Views
 
-The newsfeed template itself is simply a table modeled after the blog template that lists each news feed update, which is added to the context dict through the retrieveFeed method. 
+The newsfeed template itself is simply a table modeled after the blog template that lists each news feed update, which is added to the context dict through the retrieveFeed method.
 
 
-= Subscribe via RSS =
+# Subscribe via RSS
 
-I've added a new url_path 'subscribe', so that a URL for requesting an ATOM feed would look like this:
+I've added a new url\_path 'subscribe', so that a URL for requesting an ATOM feed would look like this:
 
 http://melange.appspot.com/site/subscribe/somesite
 
 The new URL pattern is configured in soc.views.helper.params:
 
-{{{
+```
   if params.get('subscribe'):
     new_params['django_patterns_defaults'] += [
         (r'^%(url_name)s/(?P<access_type>subscribe)/%(key_fields)s$',
          '%(module_package)s.%(module_name)s.subscribe', 
          'Subscribe to %(name_plural)s')]
-}}}
+```
 
 
 This address is added to pages with a meta tag:
 
- <link rel="alternate" type="application/rss+xml" title="RSS" href="{{ feed_url }}"/>
+> 
 
-There is also a graphic subscribe icon on the corner of the newsfeed GUI module. 
-
-The 'subscribe' path will also be the interface for any PubSub interactions, but those will only be activated on POST requests with a callback URL, otherwise the ATOM feed will be returned as normal. 
+&lt;link rel="alternate" type="application/rss+xml" title="RSS" href="{{ feed\_url }}"/&gt;
 
 
-= Notification Integration =
+
+There is also a graphic subscribe icon on the corner of the newsfeed GUI module.
+
+The 'subscribe' path will also be the interface for any PubSub interactions, but those will only be activated on POST requests with a callback URL, otherwise the ATOM feed will be returned as normal.
+
+
+# Notification Integration
 
 The notifications module has been in need of work, and I've refactored it so that it has two new beneficial features:
 
- * Deploy to multiple contexts (the newsfeed widget, an ATOM feed for the user w/ pubsub support, and information-enriched private e-mails). 
- 
- * Any entity with a newsfeed can now be referenced in the notification so that that entity's newsfeed will be updated, etc.
+  * Deploy to multiple contexts (the newsfeed widget, an ATOM feed for the user w/ pubsub support, and information-enriched private e-mails).
+
+  * Any entity with a newsfeed can now be referenced in the notification so that that entity's newsfeed will be updated, etc.
 
 
-== Notification TODO ==
+## Notification TODO
 
-* Refactor access handler to be able to perform reflective rights-based queries.
-* Improve notifications front-end
-* Licensing issues for images?
-* Improve e-mail format to take better advantage of entity-tagging in notes.
-* Tag multiple entities in notification. 
+**Refactor access handler to be able to perform reflective rights-based queries.** Improve notifications front-end
+**Licensing issues for images?** Improve e-mail format to take better advantage of entity-tagging in notes.
+**Tag multiple entities in notification.**
 
 
-= E-mail Tasks =
+# E-mail Tasks
 
 When a feed item is created, it schedules a handler to send out e-mail notification. This handler calls the sendFeedItemEmailNotifications method that fetches a list of users who are subscribed to the sender entity and e-mails them.
 
-E-mails are now each sent via the mail_dispatcher task. Since it is very common to get OverQuotaErrors, this task API should always be used for sending e-mails. 
+E-mails are now each sent via the mail\_dispatcher task. Since it is very common to get OverQuotaErrors, this task API should always be used for sending e-mails.
 
 
-= User Subscriptions =
+# User Subscriptions
 
 
-The subscriptions model contains a relational index entity for the user, containing a list of entity keys that the user is subscribed to. From their edit_profile page, the user can set a global preference for whether they are accepting e-mail notifications, and the user can also configure individual entity preferences from those pages using the subscribe-by-star UI pattern. 
+The subscriptions model contains a relational index entity for the user, containing a list of entity keys that the user is subscribed to. From their edit\_profile page, the user can set a global preference for whether they are accepting e-mail notifications, and the user can also configure individual entity preferences from those pages using the subscribe-by-star UI pattern.
 
 
-= PubSubHubbub Support =
+# PubSubHubbub Support
 
-<wiki:video url="http://www.youtube.com/watch?v=ewQBgbysSOQ"/>
+<a href='http://www.youtube.com/watch?feature=player_embedded&v=ewQBgbysSOQ' target='_blank'><img src='http://img.youtube.com/vi/ewQBgbysSOQ/0.jpg' width='425' height=344 /></a>
 
 This demo demonstrates Google Reader updating in seconds after a blog is updated.
 
-It should be fairly trivial to integrate push notification support, and abstract it so that it could also be accessed by other Melange features. 
+It should be fairly trivial to integrate push notification support, and abstract it so that it could also be accessed by other Melange features.
 
-== TODO ==
+## TODO
 
 
-== Subscription Handler ==
+## Subscription Handler
 
 The subscriptions logic contains an UpdateLogic class that is meant to automatically compile a list of users with read-access to an arbitrary entity. Unfortunately, setting subscriptions manually is the only option right now, since the automatic subscription handler is not nearly where I hoped it would be by now. The idea is very simple - just
 subscribe users to the entities where they have read-access. But the reality
@@ -142,12 +141,12 @@
 interface (subscribe-by-star). The takeaway from this is that perhaps the
 access component should be abstracted to a high-level API, because it
 appears to have gained dependencies and complexities that prevent it from
-being useful to the news feed logic. 
+being useful to the news feed logic.
 
-== Post Commit Hooks ==
+## Post Commit Hooks
 
 Since most soc projects involve a code repository, it would be useful to allow repository commits to enter the news feed. This is already possible through using an RSS feed, but real-time updates could be generated by using the Google Code Post Commit Hook Support:
 
 http://code.google.com/p/support/wiki/PostCommitWebHooks
 
-This would require project owners to change a setting on their projects, and would be fairly easy to implement. 
\ No newline at end of file
+This would require project owners to change a setting on their projects, and would be fairly easy to implement.
\ No newline at end of file
