Don't use awkward socket class; create SocketPattern base class