         return .StringData(result)
     }
 }
+
+public class HTTPResponse: HTTPResponseBase {
+    
+    /// Initialize HTTP Response
+    ///
+    /// - parameter statusCode: HTTP status code to send
+    /// - parameter body: (optional) body parts to send
+    /// - parameter headers: (optional) additional headers to send
+    /// - parameter contentType: (optional) content type to set
+    public init(_ statusCode: HTTPStatusCode, body: [SocketData]? = nil, headers: [HTTPHeader]? = nil, contentType: String? = nil) {
+        super.init()
+        
+        self.statusCode = statusCode
+        if let body = body {
+            self.body.appendContentsOf(body)
+        }
+        if let headers = headers {
+            self.headers.appendContentsOf(headers)
+        }
+        if let contentType = contentType {
+            self.headers.append(HTTPHeader("Content-Type", contentType))
+        }
+    }
+}
}

/// HTTP Response class, subclass to make specialized responses (TemplateResponse, JSONResponse, etc.)
public class HTTPResponse {
    /// Body data to send, array to support building multipart responses, will be concatenated on execution
    var body = [SocketData]()
    
    /// Headers to send, autogenerated: X-Powered-By, Content-Length, Connection, Date, Set-Cookie
    var headers = [HTTPHeader]()
    
    /// The status code to send
    let statusCode: HTTPStatusCode
    
    /// space for custom data from middleware
    public var middlewareData = [String:Any]()

        self.headers.append(header)
    }
    
    /// Simple initializer, does basically nothing
    public init() { }
    
    // MARK: - Internal
    
