diff --git a/AdministratorModel.wiki b/AdministratorModel.wiki
index 4863367..3de14cb 100644
--- a/AdministratorModel.wiki
+++ b/AdministratorModel.wiki
@@ -1,29 +1,18 @@
 #summary Administrator entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.administrator.Administrator-class.html Administrator Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-{{{
-class Administrator(db.Model):
-  """Administrator details for a specific Program.
-
-  An Administrator entity participates in a number of relationships:
-
-   author)  a 1:1 relationship associating an Administrator with generic
-     Author details and capabilities.  The back-reference in the Author
-     model is a Query named 'admin'.
-
-   host)  an optional 1:1 relationship associating generic Administrator
-     details and capabilities with a specific Host.  This relation is
-     implemented as the 'host' back-reference Query of the Host model
-     'admin' reference.
-  """
-  author = db.ReferenceProperty(reference_class=Author, required=True,
-                                collection_name="admin")
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/administrator.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/administrator.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
diff --git a/AnswerModel.wiki b/AnswerModel.wiki
index 1175601..4074b1b 100644
--- a/AnswerModel.wiki
+++ b/AnswerModel.wiki
@@ -1,54 +1,18 @@
 #summary Answer entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.answer.Answer-class.html Answer Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-{{{
-class Answer(db.Model):
-  """Model of a specific Answer to a Question in a specific Review.
-
-  An Answer entity participates in a number of relationships:
-
-   question)  a required many:1 relationship, where each of many Answers is
-     a specific answer to a single Question.  An Answer must always be
-     associated with a Question in order to be interpreted. 
-
-     The back-reference in the Question model is a Query named 'answers'.  It
-     is currently unclear how useful this back-reference will be, since the
-     same question could be used in multiple different Review "templates".
-     Given this, 'answers' currently only exists for completeness.
-
-   review)  a required many:1 relationship, where each of many Answers to
-     different Questions represents the answer set of a specific Review.
-     The back-reference in the Review model is a Query named 'answers' which
-     represents all of the specific answers to questions in that Review.
-
-  short:  db.StringProperty storing the "short" answer to the  question;
-    the interpretation of this value depends on the Question entity
-    referred to by 'question'.  Answers can be indexed, filtered, and
-    sorted by their "short" answer.  Depending on the Question type, some
-    Answers will use only 'short', some only 'long', and some both.
-
-  long:  db.TextProperty storing the "long" answer to the question; the
-    interpretation of this value depends on the Question entity referred
-    to by 'question'.
-
-  picks:  db.ListProperty of short strings from the list of possible
-    picks in the question.pick_choices list.
-  """
-  question = db.ReferenceProperty(reference_class=Question, required=True,
-                                  collection_name="answers")
-
-  review = db.ReferenceProperty(reference_class=Review, required=True,
-                                collection_name="answers")
-
-  short = db.StringProperty()
-  long = db.TextProperty()
-  picks = db.ListProperty(item_type=str)
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/answer.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/answer.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
diff --git a/AuthorModel.wiki b/AuthorModel.wiki
index 0ae6547..f49c077 100644
--- a/AuthorModel.wiki
+++ b/AuthorModel.wiki
@@ -1,40 +1,18 @@
 #summary Author entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.author.Author-class.html Author Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-{{{
-class Author(db.Model):
-  """Author details for a specific Program.
-
-  An Author entity participates in a number of relationships:
-
-   person)  a required 1:1 relationship associating generic Person details
-     with the Author role entity.
-
-   works)  a many:many relationship with Works, stored in a separate
-     WorksAuthors model.  See the WorksAuthors model class for details.
-
-   contributor)  a 1:1 relationship associating a Contributor with generic
-     Author details and capabilities.  This relation is implemented as the
-     'contributor' back-reference Query of the Contributor model 'author'
-     reference.
-
-   reviewer)  a 1:1 relationship associating a Reviewer with generic
-     Author details and capabilities.  This relation is implemented as the
-     'reviewer' back-reference Query of the Reviewer model 'author' reference.
-
-   admin)  a 1:1 relationship associating an Administrator with generic
-     Author details and capabilities.  This relation is implemented as the
-     'admin' back-reference Query of the Administrator model 'author'
-     reference.
-  """
-  person = db.ReferenceProperty(reference_class=Person, required=True,
-                                collection_name="author")
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/author.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/author.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
diff --git a/ContributorModel.wiki b/ContributorModel.wiki
index e1e174d..d49caee 100644
--- a/ContributorModel.wiki
+++ b/ContributorModel.wiki
@@ -1,34 +1,18 @@
 #summary Contributor entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.contributor.Contributor-class.html Contributor Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-{{{
-class Contributor(db.Model):
-  """Contributor details for a specific Program.
-
-  Some Contributor workflows have the Contributor (acting as an Author)
-  creating Proposals and desiring for one (or more?) of them to be
-  converted into Tasks by Reviewers and Hosts.  Other workflows have the
-  Reviewers (acting as an Author) proposing Proposals, that Contributors
-  claim to convert them into Tasks.
-
-  A Contributor entity participates in a number of relationships:
-
-   author)  a 1:1 relationship associating a Contributor with generic
-     Author details and capabilities.  The back-reference in the Author
-     model is a Query named 'contributor'.
-
-   tasks)  a many:many relationship associating all of the Tasks to which
-     a specific Contributor has contributed with that Contributor.  See
-     the TasksContributors model for details.
-  """
-  author = db.ReferenceProperty(reference_class=Author, required=True,
-                                collection_name="contributor")
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/contributor.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/contributor.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
diff --git a/DocumentationModel.wiki b/DocumentationModel.wiki
index 8833212..8fa1cc9 100644
--- a/DocumentationModel.wiki
+++ b/DocumentationModel.wiki
@@ -1,50 +1,18 @@
 #summary Documentation entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.documentation.Documentation-class.html Documentation Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
-
-{{{
-class Documentation(db.Model):
-  """Model of Documentation, which is a Work authored by Administrators.
-
-  A Documentation entity participates in a number of relationships:
-
-   work)  a required 1:1 relationship with a Work entity that contains the
-     general "work" properties of the Documentation.  The back-reference in
-     the Work model is a Query named 'documentation'.
-
-     work.authors:  the Authors of the Work referred to by this relation
-       are the Administrators (or Hosts) creating the Documentation.
-
-     work.title:  the title of the Documentation (e.g. "Verification of
-       Eligibility").
-
-     work.abstract:  summary of the contents of the 'attachment', or just
-       an indication that the required documentation was supplied but is
-       not actually attached.
-
-     work.reviews:  annotations to the Documentation made by other
-       Administrators.
-
-   person)  a many:1 relationship of Documentation entities that pertain
-     to a single Person.  The back-reference in the Person model is a
-     Query named 'docs'.
-
-   attachment:  optional db.BlobProperty containing the documentation
-     (usually a scanned image of a paper document or a PDF file).
-  """
-  work = db.ReferenceProperty(reference_class=Work, required=True,
-                              collection_name="proposal")
-
-  person = db.ReferenceProperty(reference_class=Person,
-                                collection_name="docs")
-
-  attachment = db.BlobProperty()
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/documentation.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/documentation.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
diff --git a/HostModel.wiki b/HostModel.wiki
index 1cc5668..409cf24 100644
--- a/HostModel.wiki
+++ b/HostModel.wiki
@@ -1,8 +1,8 @@
 ﻿#summary Host entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
--Documentation for the
-[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.user.Host-class.html Host Model]
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.host.Host-class.html Host Model]
 is generated automatically from the source code using
 [http://epydoc.sourceforge.net/ Epydoc].
 
@@ -11,7 +11,7 @@
 [http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/host.py including revision history],
 is also available.
 
----
+----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
diff --git a/PersonModel.wiki b/PersonModel.wiki
index 09a01b8..b319f2e 100644
--- a/PersonModel.wiki
+++ b/PersonModel.wiki
@@ -1,4 +1,4 @@
-#summary Person Model links
+#summary Person entity model
 #labels Phase-Design,Contents-Draft,Design-Model
 
 The Person entity stores a single [UserRoles#Person Person role] in the
@@ -14,8 +14,8 @@
 [http://epydoc.sourceforge.net/ Epydoc].
 
 The
-[http://code.google.com/p/soc/source/browse/trunk/soc/models/person.py latest source code],
-[http://code.google.com/p/soc/source/list?path=/trunk/soc/models/person.py including revision history],
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/person.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/person.py including revision history],
 is also available.
 
 ----
diff --git a/ReviewModel.wiki b/ReviewModel.wiki
index 7888e58..333b323 100644
--- a/ReviewModel.wiki
+++ b/ReviewModel.wiki
@@ -1,81 +1,18 @@
 #summary Review entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.review.Review-class.html Review Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-{{{
-class Review(db.Model):
-  """Model of a review of a Proposal or a Task.
-
-  A Review entity is a specific instance of a completed Survey, collecting
-  the Answers to the Questions that are found in that Survey.
-
-  Reviews are also used to implement comments and scoring annotations to
-  Proposals and Tasks.  For example, a commment attached to a Proposal is
-  a Review with the Answer to a single "question" (with that answer being
-  the comment itself).  A scoring  evaluation might be made up of
-  Answers to two "questions", one containg the comment the other
-  containing the score.
-
-  A Review entity participates in a number of relationships:
-
-   survey)  a required many:1 relationship with a Survey which acts as a
-     "template" for the Review, containing the Questions that are anwered
-     by the Answers associated with the Review.  The back-reference in
-     the Survey model is a Query named 'reviews' which represents all of
-     the Reviews that contains Answers to the Questions in that particular
-     Survey.
-
-   answers)  a 1:many relationship (but not required, since initially none
-     of the Questions to be answered by a Review will have Answers) that
-     relates the specific answers to the Survey questions for a specfic
-     Review instance.  This relation is implemented as a back-reference
-     Query of the Answer model 'review' reference.
-
-     Some (zero or more) of the Questions answered by a Review may define an
-     'approval_style' string and one or more 'approval_answers'.  See
-     the Question and Answer models for details.  All Questions answered
-     in the Review that provide non-empty 'approval_style' and
-     'approval_answers' must meet the described approval conditions for
-     the Review to represent "approval" (or a "positive outcome" or
-     a "passing grade", so to speak).  Most Reviews answer Questions in
-     a Survey that contains only a single "approval" question (if they
-     contain one at all).
-
-   reviewed)  a required many:1 relationship with a Work, where the
-     Review answers are attached to the Work as a comment, evaluation,
-     review, report, acceptance, etc.  Reviews are the mechanism by
-     which non-authors of the Work make annotations to it.  The
-     back-reference in the Work model is a Query named 'reviews'
-     which represents all of the annotations attached to that particular
-     work.
-
-   reviewer)  a required many:1 relationship with a Reviewer entity indicating
-     the "author" of the actual answers for a specific Review instance.  The
-     back-reference in the Reviewer model is a Query named 'reviews' which
-     represents all of the Reviews by that particular Reviewer.
-
-  start:  db.DateTimeProperty that indicates the beginning of the time period
-    in which this Review can be "answered" (e.g. survey start date)
-
-  end:  db.DateTimeProperty that indicates the end of the time period
-    in which this Review can be "answered" (e.g. survey end date)
-  """
-  survey = db.ReferenceProperty(reference_class=Survey, required=True,
-                                collection_name="reviews")
-
-  reviewed = db.ReferenceProperty(reference_class=Work, required=True,
-                                  collection_name="reviews")
-
-  reviewer = db.ReferenceProperty(reference_class=Reviewer, required=True,
-                                  collection_name="reviews")
-
-  start = db.DateTimeProperty()
-  end = db.DateTimeProperty()
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/review.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/review.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
diff --git a/ReviewerModel.wiki b/ReviewerModel.wiki
index 77b6617..b064ca8 100644
--- a/ReviewerModel.wiki
+++ b/ReviewerModel.wiki
@@ -1,28 +1,18 @@
 #summary Reviewer entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.reviewer.Reviewer-class.html Reviewer Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-{{{
-class Reviewer(db.Model):
-  """Reviewer details for a specific Program.
-
-  A Reviewer entity participates in a number of relationships:
-
-   author)  a 1:1 relationship associating a Contributor with generic
-     Author details and capabilities.  The back-reference in the Author
-     model is a Query named 'contributor'.
-
-   reviews)  an optional 1:many relationship of Reviews written by the
-     Reviewer.  This relation is implemented as the 'reviews'
-     back-reference Query of the Review model 'reviewer' reference.
-  """
-  author = db.ReferenceProperty(reference_class=Author, required=True,
-                                collection_name="reviewer")
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/reviewer.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/reviewer.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
diff --git a/TaskModel.wiki b/TaskModel.wiki
index b483872..d2af4d5 100644
--- a/TaskModel.wiki
+++ b/TaskModel.wiki
@@ -1,14 +1,14 @@
 ﻿#summary Task entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
 Documentation for the
-[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.user.Task-class.html Task Model]
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.task.Task-class.html Task Model]
 is generated automatically from the source code using
 [http://epydoc.sourceforge.net/ Epydoc].
 
 The
-[http://code.google.com/p/soc/source/browse/trunk/soc/models/task.py latest source code],
-[http://code.google.com/p/soc/source/list?path=/trunk/soc/models/task.py including revision history],
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/task.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/task.py including revision history],
 is also available.
 
 ----
diff --git a/UserModel.wiki b/UserModel.wiki
index 47c8e6c..a3632e2 100644
--- a/UserModel.wiki
+++ b/UserModel.wiki
@@ -1,7 +1,7 @@
 #summary User entity model
 #labels Phase-Design,Contents-Draft,Design-Model
 
--Documentation for the
+Documentation for the
 [http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.user.User-class.html User Model]
 is generated automatically from the source code using
 [http://epydoc.sourceforge.net/ Epydoc].
@@ -11,7 +11,7 @@
 [http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/user.py including revision history],
 is also available.
 
----
+----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
diff --git a/WorkModel.wiki b/WorkModel.wiki
index b5d9cc5..0f05d61 100644
--- a/WorkModel.wiki
+++ b/WorkModel.wiki
@@ -1,46 +1,18 @@
 #summary Work entity model
-#labels Phase-Design,Contents-Skeleton,Design-Model
+#labels Phase-Design,Contents-Draft,Design-Model
 
-_*Eventually, this topic should be populated by the output of*_ `pydoc`.
+Documentation for the
+[http://soc.googlecode.com/svn/wiki/html/epydoc/soc.models.work.Work-class.html Work Model]
+is generated automatically from the source code using
+[http://epydoc.sourceforge.net/ Epydoc].
 
-{{{
-class Work(db.Model):
-  """Model of a Work created by one or more Authors.
-
-  Work is a "base entity" of other more specific "works" created by "authors".
-
-  A Work entity participates in a number of relationships:
-
-   proposal), survey), documentation)
-     a 1:1 relationship with each entity containing a more specific type of
-     "work".  These relationships are represented explicitly in the other
-     "work" models by a db.ReferenceProperty named 'work'.  The collection_name
-     argument to db.ReferenceProperty should be set to the singular of the 
-     entity model name of the other "work" class.  The above relationship
-     names correspond, respectively to these Models:
-       Proposal, Survey, Documentation
-
-   authors)  a many:many relationship with Authors, stored in a separate
-     WorksAuthors model.  See the WorksAuthors model class for details.
-
-   reviews)  a 1:many relationship between a Work and the zero or more
-     Reviews of that Work.  This relation is implemented as the 'reviews'
-     back-reference Query of the Review model 'reviewed' reference.
-
-  title:  required db.StringProperty indicating the "title" of the work,
-    which may have different uses depending on the specific type of the work.
-    Works can be indexed, filtered, and sorted by 'title'.
-
-  abstract:  db.TextProperty used for different purposes, depending on the
-    specific type of the work.
-  """
-  title = db.StringProperty(required=True)
-
-  abstract = db.TextProperty()
-}}}
+The
+[http://code.google.com/p/soc/source/browse/trunk/app/soc/models/work.py latest source code],
+[http://code.google.com/p/soc/source/list?path=/trunk/app/soc/models/work.py including revision history],
+is also available.
 
 ----
 _Copyright 2008 Google Inc._
 _This work is licensed under a_
 [http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
+[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
