             type: String
             optional: true
 
-        isHidden:
-            type: Boolean
-            optional: true
-
-        sortIdx:
-            type: Number
-            decimal: true
-            optional: true
-
-        tbl_id:
-            type: SimpleSchema.RegEx.Id
-            denyUpdate: true
-
-        timestamp:
-            type: Date
-            denyUpdate: true
-            optional: true
-
-        user_id:
-            type: SimpleSchema.RegEx.Id
-            denyUpdate: true
-            optional: true
-
-        isQA:
-            type: Boolean
-            defaultValue: false
-            optional: true
-
-        timestampQA:
-            type: Date
-            optional: true
-
-        user_id_QA:
-            type: SimpleSchema.RegEx.Id
-            optional: true
-
-
-    share.exposureEvidenceSchema = new SimpleSchema
+    exposure_schema =
 
         referenceID:
             label: "Reference"
             type: SimpleSchema.RegEx.Id
 
-        tbl_id:
-            type: SimpleSchema.RegEx.Id
-            denyUpdate: true
-
-        isHidden:
-            type: Boolean
-            optional: true
-
-        sortIdx:
-            type: Number
-            decimal: true
-            optional: true
-
-        timestamp:
-            type: Date
-            denyUpdate: true
-            optional: true
-
-        user_id:
-            type: SimpleSchema.RegEx.Id
-            denyUpdate: true
-            optional: true
-
-        isQA:
-            type: Boolean
-            defaultValue: false
-            optional: true
-
-        timestampQA:
-            type: Date
-            optional: true
-
-        user_id_QA:
-            type: SimpleSchema.RegEx.Id
-            optional: true
-
-
+
+    # extend content between base base-content objects
+    _.extend(tbl_schema, base_content)
+    _.extend(ref_schema, base_content)
+    _.extend(tbl_content_base, base_content)
+    _.extend(mech_schema, tbl_content_base)
+    _.extend(epi_result_schema, tbl_content_base)
+    _.extend(epi_descriptive_schema, tbl_content_base)
+    _.extend(exposure_schema, tbl_content_base)
+
+
+    # Override simple-schema defaults
     SimpleSchema.messages({minCount: "[label] must specify at least [minCount] value(s) (press <enter> after typing to add to list)"})
+
+
+    # create simple schema objects
+    share.TableSchema = new SimpleSchema(tbl_schema)
+    share.ReferenceSchema = new SimpleSchema(ref_schema)
+    share.MechanisticEvidenceSchema = new SimpleSchema(mech_schema)
+    share.epiResultSchema = new SimpleSchema(epi_result_schema)
+    share.epiDescriptiveSchema = new SimpleSchema(epi_descriptive_schema)
+    share.exposureEvidenceSchema = new SimpleSchema(exposure_schema)
 
 
     # attach schema to collections

            type: SimpleSchema.RegEx.Id
            optional: true

        tbl_id:
            type: SimpleSchema.RegEx.Id
            denyUpdate: true

        sortIdx:
            type: Number
            decimal: true
            optional: true

        timestamp:
            type: Date
            denyUpdate: true
            optional: true

        user_id:
            type: SimpleSchema.RegEx.Id
            denyUpdate: true
            optional: true

        isQA:
            type: Boolean
            defaultValue: false
            optional: true

        timestampQA:
            type: Date
            optional: true

        user_id_QA:
            type: SimpleSchema.RegEx.Id
            optional: true


    share.epiResultSchema = new SimpleSchema

        organSite:
            label: "Organ site (ICD code)"

Meteor.startup ->


    # define base-schemas
    base_content =

        timestamp:
            type: Date
            optional: true
            denyUpdate: true

        user_id:
            type: SimpleSchema.RegEx.Id
            denyUpdate: true
            optional: true

    tbl_content_base =

        tbl_id:
            type: SimpleSchema.RegEx.Id
            denyUpdate: true

        isHidden:
            type: Boolean
            optional: true

        sortIdx:
            type: Number
            decimal: true
            optional: true

        isQA:
            type: Boolean
            defaultValue: false
            optional: true

        timestampQA:
            type: Date
            optional: true

        user_id_QA:
            type: SimpleSchema.RegEx.Id
            optional: true


    # define collection-specific schemas
    tbl_schema =

        monographAgent:
            label: "Monograph Agent Name"
