diff --git a/SocialFeaturesMelangeGSoC2010.wiki b/SocialFeaturesMelangeGSoC2010.wiki
index 5b599cd..2ab916c 100644
--- a/SocialFeaturesMelangeGSoC2010.wiki
+++ b/SocialFeaturesMelangeGSoC2010.wiki
@@ -36,7 +36,7 @@
       # If they do not click on the email link, whenever they next log into Melange, they will see ‘User Page’ on their sidebar under the ‘User’ tab. Clicking on this will take them to the profile tab of their user page.
     # They may further update the data on their profile tab, or the other two (Project, MyStuff) tabs by clicking on the ‘Edit User Page’ button to be redirected to a form where they can edit/add data for all the three tabs. 
     # The *Profile tab* will display a subset of the properties from the user_page data model. Profile related information such as contact, personal profile details, education and job information will be shown here.
-    # In the *Project tab*, students can fill in details of the project they are working on, while mentors can provide details about the project they are mentoring for. Organization Admins can use this page to provide information about all their student projects. Program Admins can use this page to provide general information about the GSoC/GHOP program itself.
+    # In the *Project tab*, students can fill in details of the project they are working on, while mentors can provide details about the project they are mentoring for. Past and Current project data for both mentors and students will be pulled from the database. Users can add on to it using a text field.Organization Admins can use this page to provide information about all their student projects. Program Admins can use this page to provide general information about the GSoC/GHOP program itself.
     # In the *My Stuff tab*, users can click on “Add Blog Feed”, to insert their blog url to display updates from their personal blogs using Melange’s RSS widget. For organization and program admins, there is provision to display two blog feeds. This is to display their own personal blog feed as well their organization/program blog feeds.
     # Once changes are saved, users may return anytime during the course of the program to change and save the information on their user pages.
 -----
@@ -54,12 +54,7 @@
 
 The Data Models
   * user_page.py
-  * education.py (not finalized)
-  * job.py (not finalized)
-  * project_details.py
-  * project_update.py (Nice to have, if time permits)
-  * project_comment.py (Nice to have, if time permits)
-
+  * project_details.py (pulled from database) 
 
 Properties of user_page.py
   * user - *ReferenceProperty*
@@ -67,66 +62,19 @@
   * phone_number – *IntegerProperty*
   * address - *StringProperty*
   * website - *LinkProperty*
-  * about_myself - *StringProperty*
-  * activities – *StringProperty*
-  * books – *StringProperty*
-  * movies – *StringProperty*
-  * television - *StringProperty*
+  * biography - *TextProperty*
   * profile_picture – *BlobProperty*
-  * education – *ListProperty*
-  * job – *ListProperty*
   * last_modified - *DateTimeProperty*
-  * project_details – *ListProperty*
+  * project_details – *ListProperty* (pull from program database)
   * feed_url - *LinkProperty*
   * user_page_status - *StringProperty*
   * tags - *StringProperty* (for filtering in maps+calendars searches)
 
 
-Properties of education.py
-  * user - *ReferenceProperty*
-  * college_name – *StringProperty*
-  * major_name – *StringProperty*
-  * start_date – *DateProperty*
-  * end_date – *DateProperty*
-
-Properties of job.py
-  * user - *ReferenceProperty*
-  * employer_name – *StringProperty*
-  * position_name – *StringProperty*
-  * start_date – *DateProperty*
-  * end_date – *DateProperty*
-
-Properties for project_details.py
-  * user - *ReferenceProperty*
-  * student - *ReferenceProperty*
-  * organization - *ReferenceProperty*
-  * mentor – *ReferenceProperty*
-  * project_title - *StringProperty*
-  * languages – *StringProperty*
-  * apis_frameworks – *IntegerProperty*
-  * related_url - *LinkProperty*
-  * project_overview - *StringProperty*
-  * other_general_info – *StringProperty*
-  * proposal_link = *LinkProperty*
-  * user_project_update – *ListProperty* (Nice to have, if time permits)
-  * current_project – *BooleanProperty*
-  * past_project - *BooleanProperty*
-
-Properties of for project_update.py
-  * project_details - *ReferenceProperty*
-  * update_text – *StringProperty*
-  * update_time – *DateTimeProperty*
-  * project_comment – *ListProperty* (Nice to have, if time permits)
-
-Properties of for project_comment.py
-  * project_update - *ReferenceProperty*
-  * comment_text – *StringProperty*
-  * comment_time – *DateTimeProperty*
-  * comment_user – *ReferenceProperty*
 
 The User page feature should be in one of the following states implied by the user_page_status property of the model.
  * Visible - This state occurs after the user is accepted into the program. Only the minimal information about the user already entered during registration period is shown on the user page. In this state, the user may edit or add to his user page at any time during the program.
- * Invisible - This state of the user page can be activated by the user if the user wishes to prevent other users from viewing their profile. (Should this be allowed?)
+ * Invisible - This state of the user page can be activated by the user if the user wishes to prevent other users from viewing their profile.
  * Invalid - The user account has been terminated.
 
 -----
@@ -185,6 +133,10 @@
 
 Workflow for Users:
 
+    * All calendars will be hosted under a single Google account owned by the program_admin. When the accepted organizations are announced, a new calendar can be created for each new organization. If organizations have participated in the program previously and they already have a calendar with the account, then that same calendar can be used.
+The Google ids of org_admins can be added to their respective org calendars giving them 
+rights to publish on their calendar.
+Org_admins can be notified about their org_calendar on acceptance. A short message and link can be added in their acceptance notification emails leading them to their org calendar page. (*Note* : Program_admins will have to provide the google account under which the program and org calendars are to be hosted.)
     * Click on 'Calendars' under the User tab in the sidebar. They view a single calendar containing events in the Program calendar as well as the events in their organization calendar. (Organization admins are owners of their respective org calendars.)
     * From this point onwards, users may choose any of the following:
        * *For Admins* Add a new event by clicking on the 'Add Event' button, which will take them to a form where they can fill in the event details and it will be shown on the org calendar.
@@ -192,6 +144,7 @@
        * *For Non-Admins* User can choose to request to add a new event by clicking on the  'Request Add Event' button. They will be redirected to a similar form as the admins 'Add Event' function. They can submit it and this event will be shown on the respective org or program calendar after it is approved by the respective admin.
        * View user's org events only.
        * View Program events only.
+    * Additionally, users can also subscribe to feeds to be notified about events with certain tags.
  
 ===Data Models===
 
@@ -203,11 +156,13 @@
   * owner - *ReferenceProperty*
   * event_name - *StringProperty*
   * description – *StringProperty*
-  * location – *StrinkProperty*
+  * lat_location – *FloatProperty*
+  * long_location – *FloatProperty*
   * is_org_event – *BooleanProperty*
   * organization - *ReferenceProperty*
   * status - *StringProperty*
   * time - *DateTimeProperty*
+  * tags - *StringProperty*
 
 An event can only be published in one calendar(i.e. program calendar or org calendar). If is_org_event is true, then it will be published in the current user's org calendar, if is_org_event is set to false, then the event will be published in the program calendar.
 These two status properties differentiate the program admin and the org admins.
@@ -219,7 +174,14 @@
   * *is_declined* : If the calendar owner chooses to decline an event request this state is set.
 
 
-===Views, Templates & Logic===
+
+
+=== APIs & Libraries ===
+   * Google Calendars API
+   * Google Maps API
+   * CalVi's UI library
+   * GeoModel (filtering locations, tentative)
+ (more coming up...)
 
 
 == Use-Case Diagrams ==
@@ -239,12 +201,140 @@
 
 http://www.comp.nus.edu.sg/~savitha/gsoc/calendars_usecase1.png
 
-= Specification & Requirements =
-  The detailed project specification will be added and updated here.  
-
 = Timeline =
   The tentative project timeline will be added here.
 
+===Week 1(22 May - 28 May)===
+
+*To Do*:
+  # Code the models, views/templates and logic for User Pages as per design above.  
+  # Modify existing code to accommodate new feature (sending out user page link in acceptance notifications etc.)
+  # Test code on localhost instance of Melange
+  # Find out how to pull data from past year databases (how to test this? can we import the database files from somewhere?)  
+
+*Deliverables*:
+  # Partial User Page feature:
+      * On receiving acceptance notification, users can click on the link to their User Page or access it from the User tab in Melange.
+      * User's will see default values on their User Page.
+      * Users can view only their *own* user page. (search and view others' user pages not added yet).
+      * Users can edit their user page data using forms.
+
+
+
+===Week 2(29 May - 4 June)===
+
+*To Do*:
+  # Develop an All Users ListView for viewing all users (who are not private) where clicking on a user takes them to the User pages
+  # Work on providing filtering in the list view based on user-tags, location and org
+  # Testing and Debugging previous weeks' work. 
+
+*Deliverables*:
+  # Almost-There User Page feature:
+      * Users can use ListView to sift through the rest of the users and click on them to view their user pages.
+      * Users can apply dynamic filtering to view users by location, org and tags using ListView.
+      
+
+
+===Week 3(5 June - 11 June)===
+
+*To Do*:
+  # Tie up loose ends and bugs for User Page feature.  
+  # Testing of feature plus writing tests(to be confirmed).
+  # code event.py data model.
+  # Design UI for calendar to be displayed (CSS/ CalVis).
+
+*Deliverables*:
+  # Fully-Functional User Page feature:
+      * User can view/edit their own user pages.
+      * Users can have a list view of all users participating in the program and view them by location, org and tags.
+      * Users can view user pages of other users by clicking on their names in the ListView.
+
+
+
+===Week 4(12 June - 18 June)===
+
+*To Do*:
+  # Modify View, Logic for Program_admin to authenticate an account where the program calendar and org calendar will be hosted. Create new org calendars once accepted orgs are announced.
+  # Modify Views and Logic for users and admins, to view the program and their org calendars Clicking on calendars in their User tab.
+  # Create templates for viewing the calendars based on user roles.
+  # Use calendar api to import calendars and display them in Melange.
+*Deliverables*:
+  # Very-Partial Calendars feature:
+      * On org acceptance, new calendars are created for each org.
+      * All users can access their 'Calendars' link in their User tab.
+      * They get to view their respective org and program calendars.
+
+
+
+===Week 5(19 June - 25 June)===
+
+*To Do*:
+  # Code or modify existing user Views, create forms and templates for event creation/requests based on user roles.
+  # Create templates and modify Views for org_admins and program_admins to approve or decline event requests.
+  # Add event.py Logic to add new event in the actual Google calendar using API once its status is set to is_approved.
+  # When adding event, use Maps Api to show a mini-map which users can use(optional) to point to the location of the event. Store this as Lat,Long attributes of event.py data model.
+
+*Deliverables*:
+  # Partial Calendar feature:
+      * Users can view Calendars
+      * Admins can add events to their respective calendars and approve/decline requests.
+      * Non-admins can send requests to add event.
+      
+
+
+===Week 6(26 June - 2 July)===
+
+*To Do*:
+  # Write a feed function using Django's feed generator(to be confirmed) allowing users to subscribe to rss feeds on events with certain tags.
+  # Test previous weeks' code.
+  # Fix Bugs, complete lagging work from previous week.
+  # Write tests?
+
+*Deliverables*:
+  # Almost-there Calendar feature:
+      * All deliverables from Week 4 and 5.
+      * Users can subscribe to feeds for events with certain tags.
+
+
+
+===Week 7(3 July - 9 July)===
+
+*To Do*:
+  # Develop ListView for events (similar to users ListView)  
+  # Allow dynamic filtering by tags, location.
+  # Users can click on events they are interested in to see a pop-out widget with the event details.
+
+*Deliverables*:
+  # Almost-there Calendar feature:
+      * All deliverables from weeks 4,5 and 6.
+      * Calendars ListView
+      * Event filtering by categories.
+      * View event using pop-up widget.
+
+
+===Week 8(10 July - 16 July)===
+
+*To Do*:
+  # Any left-over todo's from previous weeks.
+  # Testing, Testing and Testing.  
+  # Bug fixing.
+  # Documentation
+  # Get ready for mid-term evaluations.  
+
+*Deliverables*:
+  # User Page feature
+      * View/edit User Page
+      * View User Pages of all other users in the program.
+      * Use ListView to filter users by location, org and tags.
+  # Calendars Features
+      * View Program and User's org calendar.
+      * Add or Request to add Events.
+      * ListView of all program and org events and all other events marked as public.
+      * View a particular event's details.
+
+
+Post Mid-term timeline will be up shortly.
+
 = Meetings and Agendas =
 
 == Friday April 30, 2010 13:30:00 in UTC ==
