diff --git a/gio/src/memoryoutputstream.ccg b/gio/src/memoryoutputstream.ccg
index 40517b7..e59a6c8 100644
--- a/gio/src/memoryoutputstream.ccg
+++ b/gio/src/memoryoutputstream.ccg
@@ -18,3 +18,18 @@
  */
 
 #include <gio/gio.h>
+#include <giomm/memoryoutputstream.h>
+
+namespace Gio {
+
+MemoryOutputStream::MemoryOutputStream()
+:
+  Gio::OutputStream(g_memory_output_stream_new(0, NULL, g_realloc, g_free))
+{}
+
+MemoryOutputStream::MemoryOutputStream(gpointer data, gsize len, GReallocFunc realloc_fn, GDestroyNotify destroy_fn)
+:
+  Gio::OutputStream(g_memory_output_stream_new(data, len, realloc_fn, destroy_fn))
+{}
+
+} // namespace Gio
diff --git a/gio/src/memoryoutputstream.hg b/gio/src/memoryoutputstream.hg
index cf6276e..fbe6e1b 100644
--- a/gio/src/memoryoutputstream.hg
+++ b/gio/src/memoryoutputstream.hg
@@ -43,16 +43,20 @@ class MemoryOutputStream :
 {
   _CLASS_GOBJECT(MemoryOutputStream, GMemoryOutputStream, G_MEMORY_OUTPUT_STREAM, Gio::OutputStream, GOutputStream)
   _IMPLEMENTS_INTERFACE(Seekable)
-protected:
-  // TODO: more C++-like interface using sigc++
-  _WRAP_CTOR(MemoryOutputStream(gpointer data, gsize len, GReallocFunc realloc_fn, GDestroyNotify destroy), g_memory_output_stream_new)
 
 public:
   // TODO: more C++-like interface using sigc++
   _WRAP_CREATE(gpointer data, gsize len, GReallocFunc realloc_fn, GDestroyNotify destroy)
+  _WRAP_CREATE()
   _WRAP_METHOD(gpointer get_data(), g_memory_output_stream_get_data)
   _WRAP_METHOD(gsize get_size() const, g_memory_output_stream_get_size)
   _WRAP_METHOD(gsize get_data_size() const, g_memory_output_stream_get_data_size)
+
+protected:
+  // TODO: more C++-like interface using sigc++
+  // Note: GMemoryOutputStream dosn't use properties for construction parameters, so we need to make a workaround
+  MemoryOutputStream(gpointer data, gsize len, GReallocFunc realloc_fn, GDestroyNotify destroy);
+  MemoryOutputStream(); // default resizable stream
 };
 
 } // namespace Gio
