clarify Builders
diff --git a/include/json/reader.h b/include/json/reader.h
index 1111a7b..7dc9761 100644
--- a/include/json/reader.h
+++ b/include/json/reader.h
@@ -274,21 +274,27 @@
   };  // Factory
 };  // CharReader
 
+/** \brief Build a CharReader implementation.
+
+Usage:
+\code
+  using namespace Json;
+  CharReaderBuilder builder;
+  builder.collectComments_ = true;
+  std::shared_ptr<CharReader> reader(
+    builder.newCharReader());
+  Value value;
+  std::string errs;
+  bool ok = parseFromStream(std::cin, &value, &errs);
+\endcode
+*/
 class CharReaderBuilder : public CharReader::Factory {
+public:
   bool collectComments_;
   Features features_;
-public:
+
   CharReaderBuilder();
-
-  CharReaderBuilder& withCollectComments(bool v) {
-    collectComments_ = v;
-    return *this;
-  }
-
-  CharReaderBuilder& withFeatures(Features const& v) {
-    features_ = v;
-    return *this;
-  }
+  virtual ~CharReaderBuilder();
 
   virtual CharReader* newCharReader() const;
 };
diff --git a/include/json/writer.h b/include/json/writer.h
index 4b8a89c..871287f 100644
--- a/include/json/writer.h
+++ b/include/json/writer.h
@@ -105,9 +105,10 @@
   std::string indentation_;
 
   StreamWriterBuilder();
+  virtual ~StreamWriterBuilder();
 
   /// Do not take ownership of sout, but maintain a reference.
-  StreamWriter* newStreamWriter(std::ostream* sout) const;
+  virtual StreamWriter* newStreamWriter(std::ostream* sout) const;
 };
 
 /** \brief Build a StreamWriter implementation.