 		let semiSplit = qs.characters.split("&").map { String($0) }
 		for paramPair in semiSplit {
 			
-			let paramSplit = paramPair.characters.split("=").map { String($0) }
+			let paramSplit = paramPair.characters.split("=", allowEmptySlices: true).map { String($0) }
 			if paramSplit.count == 2 {
 				let name = paramSplit[0].stringByDecodingURL
 				let value = paramSplit[1].stringByDecodingURL

			let semiSplit = qs.characters.split("&").map { String($0) }
			for paramPair in semiSplit {
				
				let paramSplit = paramPair.characters.split("=").map { String($0) }
				if paramSplit.count == 2 {
					let name = paramSplit[0].stringByReplacingString("+", withString: " ").stringByDecodingURL
					let value = paramSplit[1].stringByReplacingString("+", withString: " ").stringByDecodingURL

	}()
	
	/// A tuple array containing each incoming cookie name/value pair
	public lazy var cookies: [(String, String)] = {
		var c = [(String, String)]()
		let rawCookie = self.httpCookie()
		let semiSplit = rawCookie.characters.split(";").map { String($0.filter { $0 != " " }) }
		for cookiePair in semiSplit {
			
			let cookieSplit = cookiePair.characters.split("=", allowEmptySlices: true).map { String($0.filter { $0 != " " }) }
			if cookieSplit.count == 2 {
				let name = cookieSplit[0].stringByDecodingURL
				let value = cookieSplit[1].stringByDecodingURL
