public static void start(int port)
            {
                do
                {
                    var tcpClient = SimpleWebServer.wait(port);

                    Task.Factory.StartNew(
                        () => {
                        var networkStream   = tcpClient.GetStream();
                        var requestBuff     = new byte[4096];
                        var requestResource = "";

                        try {
                            networkStream.Read(requestBuff, 0, 4096);
                        } catch { return; }


                        try {
                            var requestString = System.Text.Encoding.UTF8.GetString(requestBuff);
                            var requestLines  = requestString.Replace("\r", "").Split((char)10);
                            var requestLine   = (String)requestLines.First();
                            var requestParams = requestLine.Split(" "[0]);

                            requestResource = requestParams[1];
                        } catch { return; }

                        var existing = resources.SingleOrDefault(x => x.resource == requestResource);

                        if (existing == null)
                        {
                            Task.Factory.StartNew(() => {
                                var responseBuffer = System.Text.Encoding.UTF8.GetBytes("HTTP/1.0 404 Not Found\r\n\r\n");
                                networkStream.Write(responseBuffer, 0, responseBuffer.Length);
                                tcpClient.Close();
                                return;
                            });
                        }
                        else
                        {
                            Task.Factory.StartNew(() => {
                                var responseBytes = new List <byte>();
                                responseBytes.AddRange(System.Text.Encoding.UTF8.GetBytes("HTTP/1.0 200 OK\r\n\r\n").ToArray());


                                var responseObject = existing.handler.Invoke(requestBuff);

                                byte[] contentBuffer;

                                if (responseObject.GetType() == typeof(String))
                                {
                                    contentBuffer = System.Text.Encoding.UTF8.GetBytes((String)responseObject);
                                }
                                else
                                {
                                    contentBuffer = (Byte[])responseObject;
                                }

                                responseBytes.AddRange(contentBuffer);
                                var responseBuffer = responseBytes.ToArray();


                                networkStream.Write(responseBuffer, 0, responseBuffer.Length);
                                tcpClient.Close();
                                return;
                            });
                        }
                    });
                } while (true);
            }