diff --git a/lib/class_methods.js b/lib/class_methods.js
index <HASH>..<HASH> 100644
--- a/lib/class_methods.js
+++ b/lib/class_methods.js
@@ -394,7 +394,12 @@ ClassMethods.many = function(associatedModel) {
 
 ClassMethods.one = function(associatedModel, opts) {
   this.hasOne = this.hasOne || {}
-  this.hasOne[_.singularize(associatedModel.collectionName())] = { model: associatedModel, opts: opts }
+  var name = _.singularize(associatedModel.collectionName())
+  if(opts && opts.as) {
+    opts.foreignKey = opts.foreignKey || opts.as + "Id"
+    name = opts.as
+  }
+  this.hasOne[name] = { model: associatedModel, opts: opts }
   return this
 }
 
diff --git a/lib/instance_methods.js b/lib/instance_methods.js
index <HASH>..<HASH> 100644
--- a/lib/instance_methods.js
+++ b/lib/instance_methods.js
@@ -445,5 +445,14 @@ var InstanceMethods = {
     keys.push("_id")
     return keys
   }
+ 
+, assocs: function() {
+    var assocs = _.union(
+      _.keys(this.constructor.hasMany || {})
+    , _.keys(this.constructor.hasOne || {}) 
+    , _.keys(this.constructor.belongingTo || {})
+    )
+    return assocs
+  } 
 }
 module.exports = InstanceMethods
get a list of assocs