diff --git a/src/core/sock.c b/src/core/sock.c
index e850ba3..c116c34 100644
--- a/src/core/sock.c
+++ b/src/core/sock.c
@@ -276,9 +276,13 @@
     int val;
 
     /*  Protocol-specific socket options. */
-    if (level > NN_SOL_SOCKET)
+    if (level > NN_SOL_SOCKET) {
+        if (self->sockbase->vfptr->setopt == NULL) {
+            return -ENOPROTOOPT;
+        }
         return self->sockbase->vfptr->setopt (self->sockbase, level, option,
             optval, optvallen);
+    }
 
     /*  Transport-specific options. */
     if (level < NN_SOL_SOCKET) {
@@ -380,15 +384,18 @@
 int nn_sock_getopt_inner (struct nn_sock *self, int level,
     int option, void *optval, size_t *optvallen)
 {
-    int rc;
     struct nn_optset *optset;
     int intval;
     nn_fd fd;
 
     /*  Protocol-specific socket options. */
-    if (level > NN_SOL_SOCKET)
-        return rc = self->sockbase->vfptr->getopt (self->sockbase,
+    if (level > NN_SOL_SOCKET) {
+        if (self->sockbase->vfptr->getopt == NULL) {
+            return -ENOPROTOOPT;
+        }
+        return self->sockbase->vfptr->getopt (self->sockbase,
             level, option, optval, optvallen);
+    }
 
     /*  Transport-specific options. */
     if (level < NN_SOL_SOCKET) {
diff --git a/src/protocols/bus/bus.c b/src/protocols/bus/bus.c
index db3e847..232291c 100644
--- a/src/protocols/bus/bus.c
+++ b/src/protocols/bus/bus.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -52,8 +53,8 @@
     nn_xbus_events,
     nn_bus_send,
     nn_bus_recv,
-    nn_xbus_setopt,
-    nn_xbus_getopt
+    NULL,
+    NULL
 };
 
 static void nn_bus_init (struct nn_bus *self,
diff --git a/src/protocols/bus/xbus.c b/src/protocols/bus/xbus.c
index ac33995..2f8171a 100644
--- a/src/protocols/bus/xbus.c
+++ b/src/protocols/bus/xbus.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2013-2014 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -29,7 +30,6 @@
 #include "../../utils/cont.h"
 #include "../../utils/fast.h"
 #include "../../utils/alloc.h"
-#include "../../utils/list.h"
 #include "../../utils/attr.h"
 
 #include <stddef.h>
@@ -52,8 +52,8 @@
     nn_xbus_events,
     nn_xbus_send,
     nn_xbus_recv,
-    nn_xbus_setopt,
-    nn_xbus_getopt
+    NULL,
+    NULL
 };
 
 void nn_xbus_init (struct nn_xbus *self,
@@ -196,20 +196,6 @@
     return 0;
 }
 
-int nn_xbus_setopt (NN_UNUSED struct nn_sockbase *self, NN_UNUSED int level,
-    NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-int nn_xbus_getopt (NN_UNUSED struct nn_sockbase *self, NN_UNUSED int level,
-    NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 static int nn_xbus_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xbus *self;
diff --git a/src/protocols/bus/xbus.h b/src/protocols/bus/xbus.h
index e0a439c..88e61a6 100644
--- a/src/protocols/bus/xbus.h
+++ b/src/protocols/bus/xbus.h
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -50,10 +51,6 @@
 int nn_xbus_events (struct nn_sockbase *self);
 int nn_xbus_send (struct nn_sockbase *self, struct nn_msg *msg);
 int nn_xbus_recv (struct nn_sockbase *self, struct nn_msg *msg);
-int nn_xbus_setopt (struct nn_sockbase *self, int level, int option,
-    const void *optval, size_t optvallen);
-int nn_xbus_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 
 int nn_xbus_ispeer (int socktype);
 
diff --git a/src/protocols/pair/pair.c b/src/protocols/pair/pair.c
index 014abeb..0d8ab86 100644
--- a/src/protocols/pair/pair.c
+++ b/src/protocols/pair/pair.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
diff --git a/src/protocols/pair/xpair.c b/src/protocols/pair/xpair.c
index 6364197..a1da660 100644
--- a/src/protocols/pair/xpair.c
+++ b/src/protocols/pair/xpair.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -51,10 +52,6 @@
 static int nn_xpair_events (struct nn_sockbase *self);
 static int nn_xpair_send (struct nn_sockbase *self, struct nn_msg *msg);
 static int nn_xpair_recv (struct nn_sockbase *self, struct nn_msg *msg);
-static int nn_xpair_setopt (struct nn_sockbase *self, int level, int option,
-        const void *optval, size_t optvallen);
-static int nn_xpair_getopt (struct nn_sockbase *self, int level, int option,
-        void *optval, size_t *optvallen);
 static const struct nn_sockbase_vfptr nn_xpair_sockbase_vfptr = {
     NULL,
     nn_xpair_destroy,
@@ -65,8 +62,8 @@
     nn_xpair_events,
     nn_xpair_send,
     nn_xpair_recv,
-    nn_xpair_setopt,
-    nn_xpair_getopt
+    NULL,
+    NULL
 };
 
 static void nn_xpair_init (struct nn_xpair *self,
@@ -144,20 +141,6 @@
     return rc < 0 ? rc : 0;
 }
 
-static int nn_xpair_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-static int nn_xpair_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 int nn_xpair_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xpair *self;
diff --git a/src/protocols/pipeline/pull.c b/src/protocols/pipeline/pull.c
index 2e4f142..3ce0ba0 100644
--- a/src/protocols/pipeline/pull.c
+++ b/src/protocols/pipeline/pull.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
diff --git a/src/protocols/pipeline/push.c b/src/protocols/pipeline/push.c
index 77cd671..8113545 100644
--- a/src/protocols/pipeline/push.c
+++ b/src/protocols/pipeline/push.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
diff --git a/src/protocols/pipeline/xpull.c b/src/protocols/pipeline/xpull.c
index d2fada9..028d5f1 100644
--- a/src/protocols/pipeline/xpull.c
+++ b/src/protocols/pipeline/xpull.c
@@ -56,10 +56,6 @@
 static void nn_xpull_out (struct nn_sockbase *self, struct nn_pipe *pipe);
 static int nn_xpull_events (struct nn_sockbase *self);
 static int nn_xpull_recv (struct nn_sockbase *self, struct nn_msg *msg);
-static int nn_xpull_setopt (struct nn_sockbase *self, int level, int option,
-    const void *optval, size_t optvallen);
-static int nn_xpull_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 static const struct nn_sockbase_vfptr nn_xpull_sockbase_vfptr = {
     NULL,
     nn_xpull_destroy,
@@ -70,8 +66,8 @@
     nn_xpull_events,
     NULL,
     nn_xpull_recv,
-    nn_xpull_setopt,
-    nn_xpull_getopt
+    NULL,
+    NULL
 };
 
 static void nn_xpull_init (struct nn_xpull *self,
@@ -165,20 +161,6 @@
     return rc < 0 ? rc : 0;
 }
 
-static int nn_xpull_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-static int nn_xpull_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 int nn_xpull_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xpull *self;
diff --git a/src/protocols/pipeline/xpush.c b/src/protocols/pipeline/xpush.c
index 4d09595..c75e022 100644
--- a/src/protocols/pipeline/xpush.c
+++ b/src/protocols/pipeline/xpush.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -55,10 +56,6 @@
 static void nn_xpush_out (struct nn_sockbase *self, struct nn_pipe *pipe);
 static int nn_xpush_events (struct nn_sockbase *self);
 static int nn_xpush_send (struct nn_sockbase *self, struct nn_msg *msg);
-static int nn_xpush_setopt (struct nn_sockbase *self, int level, int option,
-    const void *optval, size_t optvallen);
-static int nn_xpush_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 static const struct nn_sockbase_vfptr nn_xpush_sockbase_vfptr = {
     NULL,
     nn_xpush_destroy,
@@ -69,8 +66,8 @@
     nn_xpush_events,
     nn_xpush_send,
     NULL,
-    nn_xpush_setopt,
-    nn_xpush_getopt
+    NULL,
+    NULL
 };
 
 static void nn_xpush_init (struct nn_xpush *self,
@@ -163,20 +160,6 @@
         msg, NULL);
 }
 
-static int nn_xpush_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-static int nn_xpush_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 int nn_xpush_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xpush *self;
diff --git a/src/protocols/pubsub/xpub.c b/src/protocols/pubsub/xpub.c
index b1484b9..ffc1d5e 100644
--- a/src/protocols/pubsub/xpub.c
+++ b/src/protocols/pubsub/xpub.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -31,7 +32,6 @@
 #include "../../utils/cont.h"
 #include "../../utils/fast.h"
 #include "../../utils/alloc.h"
-#include "../../utils/list.h"
 #include "../../utils/attr.h"
 
 #include <stddef.h>
@@ -62,10 +62,6 @@
 static void nn_xpub_out (struct nn_sockbase *self, struct nn_pipe *pipe);
 static int nn_xpub_events (struct nn_sockbase *self);
 static int nn_xpub_send (struct nn_sockbase *self, struct nn_msg *msg);
-static int nn_xpub_setopt (struct nn_sockbase *self, int level, int option,
-    const void *optval, size_t optvallen);
-static int nn_xpub_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 static const struct nn_sockbase_vfptr nn_xpub_sockbase_vfptr = {
     NULL,
     nn_xpub_destroy,
@@ -76,8 +72,8 @@
     nn_xpub_events,
     nn_xpub_send,
     NULL,
-    nn_xpub_setopt,
-    nn_xpub_getopt
+    NULL,
+    NULL
 };
 
 static void nn_xpub_init (struct nn_xpub *self,
@@ -160,20 +156,6 @@
         msg, NULL);
 }
 
-static int nn_xpub_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-static int nn_xpub_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 int nn_xpub_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xpub *self;
diff --git a/src/protocols/pubsub/xsub.c b/src/protocols/pubsub/xsub.c
index 4c3b302..188d6d9 100644
--- a/src/protocols/pubsub/xsub.c
+++ b/src/protocols/pubsub/xsub.c
@@ -1,6 +1,7 @@
 /*
     Copyright (c) 2012-2014 Martin Sustrik  All rights reserved.
     Copyright (c) 2013 GoPivotal, Inc.  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -60,8 +61,6 @@
 static int nn_xsub_recv (struct nn_sockbase *self, struct nn_msg *msg);
 static int nn_xsub_setopt (struct nn_sockbase *self, int level, int option,
     const void *optval, size_t optvallen);
-static int nn_xsub_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 static const struct nn_sockbase_vfptr nn_xsub_sockbase_vfptr = {
     NULL,
     nn_xsub_destroy,
@@ -73,7 +72,7 @@
     NULL,
     nn_xsub_recv,
     nn_xsub_setopt,
-    nn_xsub_getopt
+    NULL
 };
 
 static void nn_xsub_init (struct nn_xsub *self,
@@ -212,13 +211,6 @@
     return -ENOPROTOOPT;
 }
 
-static int nn_xsub_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 int nn_xsub_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xsub *self;
diff --git a/src/protocols/reqrep/rep.c b/src/protocols/reqrep/rep.c
index 0659a41..dff2bde 100644
--- a/src/protocols/reqrep/rep.c
+++ b/src/protocols/reqrep/rep.c
@@ -47,8 +47,8 @@
     nn_rep_events,
     nn_rep_send,
     nn_rep_recv,
-    nn_xrep_setopt,
-    nn_xrep_getopt
+    NULL,
+    NULL
 };
 
 void nn_rep_init (struct nn_rep *self,
diff --git a/src/protocols/reqrep/req.h b/src/protocols/reqrep/req.h
index deadfef..c117e79 100644
--- a/src/protocols/reqrep/req.h
+++ b/src/protocols/reqrep/req.h
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
diff --git a/src/protocols/reqrep/xrep.c b/src/protocols/reqrep/xrep.c
index f71f2f2..cc5dea7 100644
--- a/src/protocols/reqrep/xrep.c
+++ b/src/protocols/reqrep/xrep.c
@@ -49,8 +49,8 @@
     nn_xrep_events,
     nn_xrep_send,
     nn_xrep_recv,
-    nn_xrep_setopt,
-    nn_xrep_getopt
+    NULL,
+    NULL
 };
 
 void nn_xrep_init (struct nn_xrep *self, const struct nn_sockbase_vfptr *vfptr,
@@ -259,20 +259,6 @@
     return 0;
 }
 
-int nn_xrep_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-int nn_xrep_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 static int nn_xrep_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xrep *self;
diff --git a/src/protocols/reqrep/xrep.h b/src/protocols/reqrep/xrep.h
index c8b618c..052cdb1 100644
--- a/src/protocols/reqrep/xrep.h
+++ b/src/protocols/reqrep/xrep.h
@@ -65,10 +65,6 @@
 int nn_xrep_events (struct nn_sockbase *self);
 int nn_xrep_send (struct nn_sockbase *self, struct nn_msg *msg);
 int nn_xrep_recv (struct nn_sockbase *self, struct nn_msg *msg);
-int nn_xrep_setopt (struct nn_sockbase *self, int level, int option,
-    const void *optval, size_t optvallen);
-int nn_xrep_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 
 int nn_xrep_ispeer (int socktype);
 
diff --git a/src/protocols/reqrep/xreq.c b/src/protocols/reqrep/xreq.c
index 7902866..a2ece3d 100644
--- a/src/protocols/reqrep/xreq.c
+++ b/src/protocols/reqrep/xreq.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2014 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -49,8 +50,8 @@
     nn_xreq_events,
     nn_xreq_send,
     nn_xreq_recv,
-    nn_xreq_setopt,
-    nn_xreq_getopt
+    NULL,
+    NULL
 };
 
 void nn_xreq_init (struct nn_xreq *self, const struct nn_sockbase_vfptr *vfptr,
@@ -203,20 +204,6 @@
     return 0;
 }
 
-int nn_xreq_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-int nn_xreq_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 static int nn_xreq_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xreq *self;
diff --git a/src/protocols/reqrep/xreq.h b/src/protocols/reqrep/xreq.h
index 665e659..553b732 100644
--- a/src/protocols/reqrep/xreq.h
+++ b/src/protocols/reqrep/xreq.h
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -47,10 +48,6 @@
 int nn_xreq_send_to (struct nn_sockbase *self, struct nn_msg *msg,
     struct nn_pipe **to);
 int nn_xreq_recv (struct nn_sockbase *self, struct nn_msg *msg);
-int nn_xreq_setopt (struct nn_sockbase *self, int level, int option,
-    const void *optval, size_t optvallen);
-int nn_xreq_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 
 int nn_xreq_ispeer (int socktype);
 
diff --git a/src/protocols/survey/respondent.c b/src/protocols/survey/respondent.c
index f2a093b..a0cd2c8 100644
--- a/src/protocols/survey/respondent.c
+++ b/src/protocols/survey/respondent.c
@@ -1,6 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
-    Copyright 2015 Garrett D'Amore <garrett@damore.org>
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -62,8 +62,8 @@
     nn_respondent_events,
     nn_respondent_send,
     nn_respondent_recv,
-    nn_xrespondent_setopt,
-    nn_xrespondent_getopt
+    NULL,
+    NULL
 };
 
 static void nn_respondent_init (struct nn_respondent *self,
diff --git a/src/protocols/survey/xrespondent.c b/src/protocols/survey/xrespondent.c
index ce4d238..3ff71b8 100644
--- a/src/protocols/survey/xrespondent.c
+++ b/src/protocols/survey/xrespondent.c
@@ -48,8 +48,8 @@
     nn_xrespondent_events,
     nn_xrespondent_send,
     nn_xrespondent_recv,
-    nn_xrespondent_setopt,
-    nn_xrespondent_getopt
+    NULL,
+    NULL
 };
 
 void nn_xrespondent_init (struct nn_xrespondent *self,
@@ -257,20 +257,6 @@
     return 0;
 }
 
-int nn_xrespondent_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-int nn_xrespondent_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 static int nn_xrespondent_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xrespondent *self;
diff --git a/src/protocols/survey/xrespondent.h b/src/protocols/survey/xrespondent.h
index 6afbfcf..e02b5dc 100644
--- a/src/protocols/survey/xrespondent.h
+++ b/src/protocols/survey/xrespondent.h
@@ -1,6 +1,6 @@
 /*
     Copyright (c) 201-2013 Martin Sustrik  All rights reserved.
-    Copyright 2015 Garrett D'Amore <garrett@damore.org>
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -62,10 +62,6 @@
 int nn_xrespondent_events (struct nn_sockbase *self);
 int nn_xrespondent_send (struct nn_sockbase *self, struct nn_msg *msg);
 int nn_xrespondent_recv (struct nn_sockbase *self, struct nn_msg *msg);
-int nn_xrespondent_setopt (struct nn_sockbase *self, int level, int option,
-    const void *optval, size_t optvallen);
-int nn_xrespondent_getopt (struct nn_sockbase *self, int level, int option,
-    void *optval, size_t *optvallen);
 
 int nn_xrespondent_ispeer (int socktype);
 
diff --git a/src/protocols/survey/xsurveyor.c b/src/protocols/survey/xsurveyor.c
index 9a81d0a..ddc357a 100644
--- a/src/protocols/survey/xsurveyor.c
+++ b/src/protocols/survey/xsurveyor.c
@@ -1,5 +1,6 @@
 /*
     Copyright (c) 2012-2013 Martin Sustrik  All rights reserved.
+    Copyright 2016 Garrett D'Amore <garrett@damore.org>
 
     Permission is hereby granted, free of charge, to any person obtaining a copy
     of this software and associated documentation files (the "Software"),
@@ -47,8 +48,8 @@
     nn_xsurveyor_events,
     nn_xsurveyor_send,
     nn_xsurveyor_recv,
-    nn_xsurveyor_setopt,
-    nn_xsurveyor_getopt
+    NULL,
+    NULL
 };
 
 void nn_xsurveyor_init (struct nn_xsurveyor *self,
@@ -184,20 +185,6 @@
     return 0;
 }
 
-int nn_xsurveyor_setopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED const void *optval, NN_UNUSED size_t optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
-int nn_xsurveyor_getopt (NN_UNUSED struct nn_sockbase *self,
-    NN_UNUSED int level, NN_UNUSED int option,
-    NN_UNUSED void *optval, NN_UNUSED size_t *optvallen)
-{
-    return -ENOPROTOOPT;
-}
-
 static int nn_xsurveyor_create (void *hint, struct nn_sockbase **sockbase)
 {
     struct nn_xsurveyor *self;
