diff --git a/notimpl/README b/notimpl/README
new file mode 100644
index 0000000..268de39
--- /dev/null
+++ b/notimpl/README
@@ -0,0 +1,2 @@
+These are convenience objects that let one create a read-only sensor or a
+write-only object in whatever scenario.
\ No newline at end of file
diff --git a/notimpl/readonly.cpp b/notimpl/readonly.cpp
new file mode 100644
index 0000000..f6ddad3
--- /dev/null
+++ b/notimpl/readonly.cpp
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2017 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdexcept>
+
+#include "readonly.hpp"
+
+
+void ReadOnly::write(double value)
+{
+    throw std::runtime_error("Not supported.");
+}
+
+void ReadOnlyNoExcept::write(double value)
+{
+    return;
+}
diff --git a/notimpl/readonly.hpp b/notimpl/readonly.hpp
new file mode 100644
index 0000000..a609e22
--- /dev/null
+++ b/notimpl/readonly.hpp
@@ -0,0 +1,26 @@
+#pragma once
+
+/* Interface that implements an exception throwing read method. */
+
+#include "interfaces.hpp"
+
+
+class ReadOnly: public WriteInterface
+{
+    public:
+        ReadOnly()
+            : WriteInterface(0, 0)
+        { }
+
+        void write(double value) override;
+};
+
+class ReadOnlyNoExcept: public WriteInterface
+{
+    public:
+        ReadOnlyNoExcept()
+            : WriteInterface(0, 0)
+        { }
+
+        void write(double value) override;
+};
diff --git a/notimpl/writeonly.cpp b/notimpl/writeonly.cpp
new file mode 100644
index 0000000..a465ecf
--- /dev/null
+++ b/notimpl/writeonly.cpp
@@ -0,0 +1,26 @@
+/**
+ * Copyright 2017 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdexcept>
+
+#include "writeonly.hpp"
+
+
+ReadReturn WriteOnly::read(void)
+{
+    throw std::runtime_error("Not supported.");
+}
+
diff --git a/notimpl/writeonly.hpp b/notimpl/writeonly.hpp
new file mode 100644
index 0000000..4c26fbd
--- /dev/null
+++ b/notimpl/writeonly.hpp
@@ -0,0 +1,15 @@
+/* Interface that implements an exception throwing write method. */
+#pragma once
+
+#include "interfaces.hpp"
+
+
+class WriteOnly: public ReadInterface
+{
+    public:
+        WriteOnly()
+            : ReadInterface()
+        { }
+
+        ReadReturn read(void) override;
+};
