old_contents: 'use strict';
  
  var connstr = require('./connstr');
  
  var Bucket = require('./bucket');
  var ClusterManager = require('./clustermgr');
  
  /**
   * Represents a singular cluster containing your buckets.
   *
   * @param {string} [cnstr] The connection string for your cluster.
   * @param {Object} [options]
   *  @param {string} [options.certpath]
   *  The path to the certificate to use for SSL connections
   * @constructor
   *
   * @since 2.0.0
   * @committed
   */
  function Cluster(cnstr, options) {
    this.dsnObj = connstr.parse(cnstr);
  
    // Copy passed options into the connection string
    if (options instanceof Object) {
      for (var i in options) {
        if (options.hasOwnProperty(i)) {
          this.dsnObj.options[i] = encodeURIComponent(options[i]);
        }
      }
    }
  }
  
  /**
   * Open a bucket to perform operations.  This will begin the handshake
   * process immediately and operations will complete later.  Subscribe to
   * the `connect` event to be alerted when the connection is ready, though
   * be aware operations can be successfully queued before this.
   *
   * @param {string} [name] The name of the bucket to open.
   * @param {string} [password] Password for the bucket.
   * @param {Function} [callback]
   * Callback to invoke on connection success or failure.
   * @returns {Bucket}
   *
   * @since 2.0.0
   * @committed
   */
  Cluster.prototype.openBucket = function(name, password, callback) {
    if (password instanceof Function) {
      callback = arguments[1];
      password = arguments[0];
    }
  
    var bucketDsnObj = connstr.normalize(this.dsnObj);
    bucketDsnObj.bucket = name;
    this.dsnObj = bucketDsnObj;
  
    var bucket = new Bucket({
      dsnObj: bucketDsnObj,
      username: name,
      password: password
    });
    if (callback) {
      bucket.on('connect', callback);
      bucket.on('error', callback);
    }
    return bucket;
  };
  
  /**
   * Creates a manager allowing the management of a Couchbase cluster.
   *
   * @returns {ClusterManager}
   *
   * @since 2.0.0
   * @committed
   */
  Cluster.prototype.manager = function(username, password) {
    return new ClusterManager(this, username, password);
  };
  
  module.exports = Cluster;
  
new_contents: 'use strict';
  
  var connstr = require('./connstr');
  
  var Bucket = require('./bucket');
  var ClusterManager = require('./clustermgr');
  
  /**
   * Represents a singular cluster containing your buckets.
   *
   * @param {string} [cnstr] The connection string for your cluster.
   * @param {Object} [options]
   *  @param {string} [options.certpath]
   *  The path to the certificate to use for SSL connections
   * @constructor
   *
   * @since 2.0.0
   * @committed
   */
  function Cluster(cnstr, options) {
    this.dsnObj = connstr.parse(cnstr);
  
    // Copy passed options into the connection string
    if (options instanceof Object) {
      for (var i in options) {
        if (options.hasOwnProperty(i)) {
          this.dsnObj.options[i] = encodeURIComponent(options[i]);
        }
      }
    }
  }
  
  /**
   * Open a bucket to perform operations.  This will begin the handshake
   * process immediately and operations will complete later.  Subscribe to
   * the `connect` event to be alerted when the connection is ready, though
   * be aware operations can be successfully queued before this.
   *
   * @param {string} [name] The name of the bucket to open.
   * @param {string} [password] Password for the bucket.
   * @param {Function} [callback]
   * Callback to invoke on connection success or failure.
   * @returns {Bucket}
   *
   * @since 2.0.0
   * @committed
   */
  Cluster.prototype.openBucket = function(name, password, callback) {
    if (password instanceof Function) {
      callback = arguments[1];
      password = '';
    }
  
    var bucketDsnObj = connstr.normalize(this.dsnObj);
    bucketDsnObj.bucket = name;
    this.dsnObj = bucketDsnObj;
  
    var bucket = new Bucket({
      dsnObj: bucketDsnObj,
      username: name,
      password: password
    });
    if (callback) {
      bucket.on('connect', callback);
      bucket.on('error', callback);
    }
    return bucket;
  };
  
  /**
   * Creates a manager allowing the management of a Couchbase cluster.
   *
   * @returns {ClusterManager}
   *
   * @since 2.0.0
   * @committed
   */
  Cluster.prototype.manager = function(username, password) {
    return new ClusterManager(this, username, password);
  };
  
  module.exports = Cluster;
  
subject: Correct error in previous commit relating to optional parameters.