docs: function (parent, name) {
              this.name = name;
              var self = this;
              this.parent = parent;
              var parentProto = parent.prototype;
              parentProto["__defineGetter__"](name, function () {
                  return self._getter(this);
              });
              parentProto["__defineGetter__"](this.associatedDatasetName, function () {
                  return self._filter(this);
              });
  
              if (!this.readOnly && this.createSetter) {
                  //define a setter because we arent read only
                  parentProto["__defineSetter__"](name, function (vals) {
                      self._setter(vals, this);
                  });
              }
  
              //set up all callbacks
              ["pre", "post"].forEach(function (op) {
                  ["save", "update", "remove", "load"].forEach(function (type) {
                      parent[op](type, function (next) {
                          return self["_" + op + type.charAt(0).toUpperCase() + type.slice(1)](next, this);
                      });
                  }, this);
              }, this);
          }