docs: function(self, prefix, setter, vector) {
      var publicX = prefix + "x",
          publicY = prefix + "y",
          privateX = "_" + publicX,
          privateY = "_" + publicY;
  
      if (setter) {
          Crafty.defineField(
              vector,
              "x",
              function() {
                  return self[privateX];
              },
              function(v) {
                  self[publicX] = v;
              }
          );
          Crafty.defineField(
              vector,
              "y",
              function() {
                  return self[privateY];
              },
              function(v) {
                  self[publicY] = v;
              }
          );
      } else {
          Crafty.defineField(
              vector,
              "x",
              function() {
                  return self[privateX];
              },
              function(v) {}
          );
          Crafty.defineField(
              vector,
              "y",
              function() {
                  return self[privateY];
              },
              function(v) {}
          );
      }
      if (Object.seal) {
          Object.seal(vector);
      }
  
      return vector;
  }