diff --git a/gm/factory.cpp b/gm/factory.cpp
index 29cf7ea..bd79c9d 100644
--- a/gm/factory.cpp
+++ b/gm/factory.cpp
@@ -12,7 +12,7 @@
 #include "SkDiscardableMemoryPool.h"
 #include "SkDiscardablePixelRef.h"
 #include "SkImageDecoder.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
 #include "SkOSFile.h"
 #include "SkStream.h"
 
diff --git a/include/core/SkImageGenerator.h b/include/core/SkImageGenerator.h
index 220973a..f399ab5 100644
--- a/include/core/SkImageGenerator.h
+++ b/include/core/SkImageGenerator.h
@@ -8,7 +8,6 @@
 #ifndef SkImageGenerator_DEFINED
 #define SkImageGenerator_DEFINED
 
-#include "SkDiscardableMemory.h"
 #include "SkImageInfo.h"
 
 class SkBitmap;
@@ -31,15 +30,9 @@
  *  @param destination Upon success, this bitmap will be
  *  configured and have a pixelref installed.
  *
- *  @param factory If not NULL, this object will be used as a
- *  source of discardable memory when decoding.  If NULL, then
- *  SkDiscardableMemory::Create() will be called.
- *
  *  @return true iff successful.
  */
-SK_API bool SkInstallDiscardablePixelRef(SkImageGenerator* generator,
-                                         SkBitmap* destination,
-                                         SkDiscardableMemory::Factory* factory = NULL);
+SK_API bool SkInstallDiscardablePixelRef(SkImageGenerator*, SkBitmap* destination);
 
 
 /**
diff --git a/samplecode/SampleEncode.cpp b/samplecode/SampleEncode.cpp
index 080c05f..e65b2d3 100644
--- a/samplecode/SampleEncode.cpp
+++ b/samplecode/SampleEncode.cpp
@@ -196,7 +196,7 @@
                     if (!SkInstallDiscardablePixelRef(
                             SkDecodingImageGenerator::Create(encoded,
                                 SkDecodingImageGenerator::Options()),
-                            &bm, NULL)) {
+                            &bm)) {
                     SkDebugf("[%s:%d] failed to decode %s%s\n",
                              __FILE__, __LINE__,gConfigLabels[i], gExt[j]);
                     }
diff --git a/samplecode/SamplePicture.cpp b/samplecode/SamplePicture.cpp
index e696903..f242c21 100644
--- a/samplecode/SamplePicture.cpp
+++ b/samplecode/SamplePicture.cpp
@@ -41,7 +41,7 @@
     SkAutoDataUnref data(SkData::NewFromFileName(path.c_str()));
     if (data.get() != NULL) {
         SkInstallDiscardablePixelRef(SkDecodingImageGenerator::Create(
-            data, SkDecodingImageGenerator::Options()), &bm, NULL);
+            data, SkDecodingImageGenerator::Options()), &bm);
     }
     return bm;
 }
diff --git a/src/core/SkImageGeneratorPriv.h b/src/core/SkImageGeneratorPriv.h
new file mode 100644
index 0000000..e03294d
--- /dev/null
+++ b/src/core/SkImageGeneratorPriv.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2014 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SkImageGeneratorPriv_DEFINED
+#define SkImageGeneratorPriv_DEFINED
+
+#include "SkImageGenerator.h"
+#include "SkDiscardableMemory.h"
+
+/**
+ *  Takes ownership of SkImageGenerator.  If this method fails for
+ *  whatever reason, it will return false and immediatetely delete
+ *  the generator.  If it succeeds, it will modify destination
+ *  bitmap.
+ *
+ *  If generator is NULL, will safely return false.
+ *
+ *  If this fails or when the SkDiscardablePixelRef that is
+ *  installed into destination is destroyed, it will call
+ *  SkDELETE() on the generator.  Therefore, generator should be
+ *  allocated with SkNEW() or SkNEW_ARGS().
+ *
+ *  @param destination Upon success, this bitmap will be
+ *  configured and have a pixelref installed.
+ *
+ *  @param factory If not NULL, this object will be used as a
+ *  source of discardable memory when decoding.  If NULL, then
+ *  SkDiscardableMemory::Create() will be called.
+ *
+ *  @return true iff successful.
+ */
+bool SkInstallDiscardablePixelRef(SkImageGenerator*, SkBitmap* destination,
+                                  SkDiscardableMemory::Factory* factory);
+
+#endif
diff --git a/src/lazy/SkDiscardablePixelRef.cpp b/src/lazy/SkDiscardablePixelRef.cpp
index 56b94b7..267e097 100644
--- a/src/lazy/SkDiscardablePixelRef.cpp
+++ b/src/lazy/SkDiscardablePixelRef.cpp
@@ -77,8 +77,7 @@
     fDiscardableMemory->unlock();
 }
 
-bool SkInstallDiscardablePixelRef(SkImageGenerator* generator,
-                                  SkBitmap* dst,
+bool SkInstallDiscardablePixelRef(SkImageGenerator* generator, SkBitmap* dst,
                                   SkDiscardableMemory::Factory* factory) {
     SkImageInfo info;
     SkAutoTDelete<SkImageGenerator> autoGenerator(generator);
@@ -97,3 +96,9 @@
     dst->setPixelRef(ref);
     return true;
 }
+
+// This is the public API
+bool SkInstallDiscardablePixelRef(SkImageGenerator* generator, SkBitmap* dst) {
+    return SkInstallDiscardablePixelRef(generator, dst, NULL);
+}
+
diff --git a/src/lazy/SkDiscardablePixelRef.h b/src/lazy/SkDiscardablePixelRef.h
index cbc2a89..e5e1c9f 100644
--- a/src/lazy/SkDiscardablePixelRef.h
+++ b/src/lazy/SkDiscardablePixelRef.h
@@ -52,8 +52,7 @@
                           size_t rowBytes,
                           SkDiscardableMemory::Factory* factory);
 
-    friend bool SkInstallDiscardablePixelRef(SkImageGenerator*,
-                                             SkBitmap*,
+    friend bool SkInstallDiscardablePixelRef(SkImageGenerator*, SkBitmap*,
                                              SkDiscardableMemory::Factory*);
 
     typedef SkPixelRef INHERITED;
diff --git a/tests/CachedDecodingPixelRefTest.cpp b/tests/CachedDecodingPixelRefTest.cpp
index 705f066..10e33ba 100644
--- a/tests/CachedDecodingPixelRefTest.cpp
+++ b/tests/CachedDecodingPixelRefTest.cpp
@@ -12,6 +12,7 @@
 #include "SkDecodingImageGenerator.h"
 #include "SkDiscardableMemoryPool.h"
 #include "SkImageDecoder.h"
+#include "SkImageGeneratorPriv.h"
 #include "SkScaledImageCache.h"
 #include "SkStream.h"
 #include "SkUtils.h"
@@ -152,7 +153,7 @@
     // Use system-default discardable memory.
     return SkInstallDiscardablePixelRef(
         SkDecodingImageGenerator::Create(
-            encoded, SkDecodingImageGenerator::Options()), dst, NULL);
+            encoded, SkDecodingImageGenerator::Options()), dst);
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -276,7 +277,7 @@
     SkBitmap bm;
     SkImageGenerator* ig = new TestImageGenerator(
         TestImageGenerator::kSucceedGetPixels_TestType, reporter);
-    SkInstallDiscardablePixelRef(ig, &bm, NULL);
+    SkInstallDiscardablePixelRef(ig, &bm);
     bm.pixelRef()->lockPixels();
 }
 
diff --git a/tests/DrawBitmapRectTest.cpp b/tests/DrawBitmapRectTest.cpp
index e6cc781..f294ae7 100644
--- a/tests/DrawBitmapRectTest.cpp
+++ b/tests/DrawBitmapRectTest.cpp
@@ -9,7 +9,7 @@
 #include "SkCanvas.h"
 #include "SkData.h"
 #include "SkDiscardableMemoryPool.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
 #include "SkMatrixUtils.h"
 #include "SkPaint.h"
 #include "SkRandom.h"
diff --git a/tests/ImageDecodingTest.cpp b/tests/ImageDecodingTest.cpp
index 7f9ff30..21c7747 100644
--- a/tests/ImageDecodingTest.cpp
+++ b/tests/ImageDecodingTest.cpp
@@ -16,7 +16,7 @@
 #include "SkGradientShader.h"
 #include "SkImageDecoder.h"
 #include "SkImageEncoder.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
 #include "SkImagePriv.h"
 #include "SkOSFile.h"
 #include "SkPoint.h"
@@ -455,7 +455,7 @@
 
     bool success = SkInstallDiscardablePixelRef(
         SkDecodingImageGenerator::Create(encoded,
-            SkDecodingImageGenerator::Options()), &bm, NULL);
+            SkDecodingImageGenerator::Options()), &bm);
 
     REPORTER_ASSERT(reporter, success);
     if (!success) {
@@ -584,14 +584,13 @@
             return;
         }
         success = SkInstallDiscardablePixelRef(
-            SkDecodingImageGenerator::Create(encodedData, opts), &bm, NULL);
+            SkDecodingImageGenerator::Create(encodedData, opts), &bm);
     } else {
         if (NULL == encodedStream) {
             return;
         }
         success = SkInstallDiscardablePixelRef(
-            SkDecodingImageGenerator::Create(encodedStream->duplicate(), opts),
-            &bm, NULL);
+            SkDecodingImageGenerator::Create(encodedStream->duplicate(), opts), &bm);
     }
     if (!success) {
         if (opts.fUseRequestedColorType
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
index 8467d6a..ac44a5c 100644
--- a/tests/PictureTest.cpp
+++ b/tests/PictureTest.cpp
@@ -1113,7 +1113,7 @@
 
     SkBitmap bm;
     bool installSuccess = SkInstallDiscardablePixelRef(
-         SkDecodingImageGenerator::Create(data, SkDecodingImageGenerator::Options()), &bm, NULL);
+         SkDecodingImageGenerator::Create(data, SkDecodingImageGenerator::Options()), &bm);
     REPORTER_ASSERT(reporter, installSuccess);
 
     // Write both bitmaps to pictures, and ensure that the resulting data streams are the same.
diff --git a/tools/LazyDecodeBitmap.cpp b/tools/LazyDecodeBitmap.cpp
index 83fca5f..6c4160c 100644
--- a/tools/LazyDecodeBitmap.cpp
+++ b/tools/LazyDecodeBitmap.cpp
@@ -10,7 +10,7 @@
 #include "SkData.h"
 #include "SkDecodingImageGenerator.h"
 #include "SkDiscardableMemoryPool.h"
-#include "SkImageGenerator.h"
+#include "SkImageGeneratorPriv.h"
 #include "SkForceLinking.h"
 
 #include "SkCommandLineFlags.h"
