fixes #847 Option handling methods should be optional
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;