 import Foundation
 
 public class HTTPHeader {
-    var HTTPVersion: String
-    var method: String
-    var isConnect: Bool = false
-    var path: String
-    var host: String
-    var port: Int
+    public var HTTPVersion: String
+    public var method: String
+    public var isConnect: Bool = false
+    public var path: String
+    public var host: String
+    public var port: Int
     // just assume that `Content-Length` is given as of now.
     // Chunk is not supported yet.
-    var contentLength: Int = 0
-    var headers: [(String, String)] = []
-    var rawHeader: NSData?
+    public var contentLength: Int = 0
+    public var headers: [(String, String)] = []
+    public var rawHeader: NSData?
 
-    init?(headerString: String) {
+    public init?(headerString: String) {
         let lines = headerString.componentsSeparatedByString("\r\n")
         guard lines.count > 3 else {
             return nil

        return strRep
    }

    func addHeader(key: String, value: String) {
        headers.append(key, value)
    }

    func rewriteToRelativePath() {
        if path[path.startIndex] != "/" {
            guard let rewrotePath = URL.matchRelativePath(path) else {
                return

        return nil
    }

    public func removeProxyHeader() {
        let ProxyHeader = ["Proxy-Authenticate", "Proxy-Authorization", "Proxy-Connection"]
        for header in ProxyHeader {
            removeHeader(header)
