code: func New(rpcClnts []NetLocker, rpcOwnNode int) (*Dsync, error) {
  	if len(rpcClnts) < 2 {
  		return nil, errors.New("Dsync is not designed for less than 2 nodes")
  	} else if len(rpcClnts) > 32 {
  		return nil, errors.New("Dsync is not designed for more than 32 nodes")
  	}
  
  	if rpcOwnNode > len(rpcClnts) {
  		return nil, errors.New("Index for own node is too large")
  	}
  
  	ds := &Dsync{}
  	ds.dNodeCount = len(rpcClnts)
  
  	// With odd number of nodes, write and read quorum is basically the same
  	ds.dquorum = int(ds.dNodeCount/2) + 1
  	ds.dquorumReads = int(math.Ceil(float64(ds.dNodeCount) / 2.0))
  	ds.ownNode = rpcOwnNode
  
  	// Initialize node name and rpc path for each NetLocker object.
  	ds.rpcClnts = make([]NetLocker, ds.dNodeCount)
  	copy(ds.rpcClnts, rpcClnts)
  
  	return ds, nil
  }
docs: // New - initializes a new dsync object with input rpcClnts.