diff --git a/http.go b/http.go
index f99ce9a2..e7d24fca 100644
--- a/http.go
+++ b/http.go
@@ -258,20 +258,9 @@ func newServer(cfg config.Server) *Server {
 		cfg.Name = config.DefaultServerName
 	}
 	s := &Server{Server: &fasthttp.Server{Name: cfg.Name}, Config: cfg}
-	s.prepare()
 	return s
 }
 
-// prepare just prepares the listening addr
-func (s *Server) prepare() {
-	s.Config.ListeningAddr = config.ServerParseAddr(s.Config.ListeningAddr)
-	if s.Server != nil {
-		s.Server.MaxRequestBodySize = s.Config.MaxRequestBodySize
-		s.Server.ReadBufferSize = s.Config.ReadBufferSize
-		s.Server.WriteBufferSize = s.Config.WriteBufferSize
-	}
-}
-
 // IsListening returns true if server is listening/started, otherwise false
 func (s *Server) IsListening() bool {
 	if s == nil {
@@ -423,7 +412,9 @@ func (s *Server) Open(h fasthttp.RequestHandler) error {
 		return errServerAlreadyStarted.Return()
 	}
 
-	s.prepare() // do it again for any case
+	s.Server.MaxRequestBodySize = s.Config.MaxRequestBodySize
+	s.Server.ReadBufferSize = s.Config.ReadBufferSize
+	s.Server.WriteBufferSize = s.Config.WriteBufferSize
 
 	if s.Config.RedirectTo != "" {
 		// override the handler and redirect all requests to this addr
@@ -439,13 +430,16 @@ func (s *Server) Open(h fasthttp.RequestHandler) error {
 		s.Server.Handler = h
 	}
 
+	if s.Config.Mode > 0 {
+		return s.listenUNIX()
+	}
+
+	s.Config.ListeningAddr = config.ServerParseAddr(s.Config.ListeningAddr)
+
 	if s.Config.Virtual {
 		return nil
 	}
 
-	if s.Config.Mode > 0 {
-		return s.listenUNIX()
-	}
 	return s.listen()
 
 }
diff --git a/http_test.go b/http_test.go
index 654fda8a..cbfd3fc5 100644
--- a/http_test.go
+++ b/http_test.go
@@ -77,9 +77,9 @@ func TestServerHost(t *testing.T) {
 	server2.Config.ListeningAddr = "mydomain.com"
 	server3.Config.ListeningAddr = ":9090"
 
-	server1.prepare()
-	server2.prepare()
-	server3.prepare()
+	server1.Config.ListeningAddr = config.ServerParseAddr(server1.Config.ListeningAddr)
+	server2.Config.ListeningAddr = config.ServerParseAddr(server2.Config.ListeningAddr)
+	server3.Config.ListeningAddr = config.ServerParseAddr(server3.Config.ListeningAddr)
 
 	if server1.Host() != expectedHost1 {
 		t.Fatalf("Expecting server 1's host to be %s but we got %s", expectedHost1, server1.Host())
@@ -96,7 +96,7 @@ func TestServerHostname(t *testing.T) {
 	var server Server
 	var expectedHostname = "mydomain.com"
 	server.Config.ListeningAddr = expectedHostname + ":1993"
-	server.prepare()
+	server.Config.ListeningAddr = config.ServerParseAddr(server.Config.ListeningAddr)
 	if server.Hostname() != expectedHostname {
 		t.Fatalf("Expecting server's hostname to be %s but we got %s", expectedHostname, server.Hostname())
 	}
@@ -126,8 +126,9 @@ func TestServerPort(t *testing.T) {
 	expectedPort2 := 80
 	server1.Config.ListeningAddr = "mydomain.com:8080"
 	server2.Config.ListeningAddr = "mydomain.com"
-	server1.prepare()
-	server2.prepare()
+	server1.Config.ListeningAddr = config.ServerParseAddr(server1.Config.ListeningAddr)
+	server2.Config.ListeningAddr = config.ServerParseAddr(server2.Config.ListeningAddr)
+
 	if server1.Port() != expectedPort1 {
 		t.Fatalf("Expecting server 1's port to be %d but we got %d", expectedPort1, server1.Port())
 	}