diff --git a/lib/collection.js b/lib/collection.js
index <HASH>..<HASH> 100644
--- a/lib/collection.js
+++ b/lib/collection.js
@@ -15,6 +15,19 @@ var Static = require('./static')
   , model = require('./model');
 
 /**
+ * Create a collection of sub documents.
+ *
+ * @param {Constructor} Child sub document constructor
+ * @param {Object} parent main document
+ * @return {Object} constructed sub document
+ * @api private
+ */
+function createSubCollection(Child, parent) {
+  Child.prototype.save = Child.prototype.save.bind(parent);
+  return new Child;
+}
+
+/**
  * Default model definition of fossa.
  *
  * Options:
@@ -41,6 +54,17 @@ module.exports = function collection(options) {
      * @api public
      */
   , initialize: function initialize() {
+      // Initialize subdocuments.
+      var subdocs = options.subdocs;
+      if (subdocs) {
+        Object.keys(subdocs).forEach(function addSubDocs(key) {
+          this[key] = createSubCollection(subdocs[key], this);
+        }.bind(this));
+
+        // Remove the key from the options.
+        delete options.subdocs;
+      }
+
       // Store references the collection name, database and fossa.
       _.extend(this, options);
     }
[minor] bind subdocuments to the collection, save routes to main