 		.set("tagger")
 		.set("target", "targetId")
 		.set("type")
-	@target = (cb) =>
-		@repository.object @targetId, @type, cb
-	return @
-
-<<<<<<< HEAD
+	return @
+Tag.prototype.target = (cb) ->
+	@repository.object @targetId, @type, cb
+
 Gitteh.Remote = Remote = (@repository, nativeRemote) ->
+	_priv = createPrivate @
+	_priv.native = nativeRemote
+	_priv.connected = false
+
 	if nativeRemote not instanceof NativeRemote
 		throw new Error "Don't construct me, see Repository.remote()"
 
-	connected = false
-
 	Object.defineProperty @, "connected",
-		get: -> return connected
+		get: -> return _priv.connected
 		enumerable: true
 		configurable: false
 

		cb: type: "function"
	bindings.initRepository path, bare, wrapCallback cb, (repo) ->
		cb null, new Repository repo

Gitteh.clone = =>
	[url, path, cb] = args
		url: type: "string"

			return o
	}

oidRegex = /^[a-zA-Z0-9]{0,40}$/
args.validators.oid = (val) ->
	return false if typeof val isnt "string"
	return false if not oidRegex.test val
	return false if val.length < minOidLength
	return true

objectTypes = ["any", "blob", "commit", "tag", "tree"]
args.validators.objectType = (val) ->
	return objectTypes.indexOf val > -1

remoteDirs = ["push", "fetch"]
args.validators.remoteDir = (val) ->
	return remoteDirs.indexOf val > -1

checkOid = (str, allowLookup = true) ->
	throw new TypeError "OID should be a string" if typeof str isnt "string"
	throw new TypeError "Invalid OID" if not oidRegex.test str
	throw new Error "OID is too short" if str.length < bindings.minOidLength
	throw new TypeError "Invalid OID" if not allowLookup and str.length isnt 40

Gitteh.Signature = Signature = (obj) ->
	immutable(@, obj)
		.set("name")
		.set("email")
