diff --git a/CHANGES.md b/CHANGES.md
index 229d2d74..58e68379 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -2,10 +2,20 @@
 
 ## [0.2.2] - 2018-11-14
 
-* Refactor Connector and Resolver services
+### Added
 
 * Add low/high caps to Framed
 
+### Changed
+
+* Refactor Connector and Resolver services
+
+
+### Fixed
+
+* Fix wrong service to socket binding
+
+
 ## [0.2.0] - 2018-11-08
 
 ### Added
diff --git a/src/server/mod.rs b/src/server/mod.rs
index a76f8535..d84f87dd 100644
--- a/src/server/mod.rs
+++ b/src/server/mod.rs
@@ -40,7 +40,9 @@ impl Message for StopServer {
 pub(crate) struct Token(usize);
 
 impl Token {
-    pub(crate) fn next(&self) -> Token {
-        Token(self.0 + 1)
+    pub(crate) fn next(&mut self) -> Token {
+        let token = Token(self.0 + 1);
+        self.0 += 1;
+        token
     }
-}
+}
\ No newline at end of file
diff --git a/src/server/server.rs b/src/server/server.rs
index 44842575..e6a251a7 100644
--- a/src/server/server.rs
+++ b/src/server/server.rs
@@ -144,8 +144,15 @@ impl Server {
     {
         let sockets = bind_addr(addr)?;
 
+        let token = self.token.next();
+        self.services.push(StreamNewService::create(
+            name.as_ref().to_string(),
+            token,
+            factory,
+        ));
+
         for lst in sockets {
-            self = self.listen(name.as_ref(), lst, factory.clone())
+            self.sockets.push((token, lst));
         }
         Ok(self)
     }