             sendPriority = try getSocketOption(self, .SendPriority)        // obtain the send priority for the end-point.
         }
 
-        return SocketPriorities(receivePriority: receivePriority, sendPriority: sendPriority)
+        let ipv4Only = try self.getIPv4Only()
+
+        let endPointId = try establishEndPoint()
+
+        let endPoint = EndPoint(id:         Int(endPointId),
+                                url:        url,
+                                type:       type,
+                                priorities: SocketPriorities(receivePriority: receivePriority, sendPriority: sendPriority),
+                                ipv4Only:   ipv4Only,
+                                name:       name)
+
+        self.endPoints.insert(endPoint)
+
+        return endPoint
     }
 
     /// Adds a local endpoint to the socket. The endpoint can be then used by other applications to connect to.


/*
    NanoSocket.swift


    /// - Note:    Note that `bindToURL()` may be called multiple times on the same socket thus allowing the
    ///            socket to communicate with multiple heterogeneous endpoints.
    public func bindToURL(_ url: URL, name: String = "") throws -> EndPoint {
        return try self._establishEndPoint(url: url, name: name, type: .Bind, {
            try url.absoluteString.withCString { address in
                let endPointId = nn_bind(self.fileDescriptor, address)

                guard (endPointId >= 0) else {
                    throw NanoMessageError.BindToURL(code: nn_errno(), url: url)
                }

                return endPointId
            }
        })
    }

    /// Adds a local endpoint to the socket. The endpoint can be then used by other applications to connect to.
