diff --git a/include/zipr.h b/include/zipr.h
index f473c528c90e5ee1069dc68e7be0f7e764926efe..5dccca2e715d90891dbe581a4ae38d0a83e62e71 100644
--- a/include/zipr.h
+++ b/include/zipr.h
@@ -33,38 +33,20 @@
 
 #include <memory_space.h>
 #include <dollop_man.h>
+#include <set>
+#include <utility>
 
 
 namespace Zipr_SDK
 {
 
+typedef std::set< std::pair<Dollop_t*,RangeAddress_t> > PlacementQueue_t;
+
 class Zipr_t
 {
-	protected:
-		/*
-		 * Private, but listing them here so that SDK users
-		 * can get a sense of the overall flow of the rewriter.
-		 */
-		virtual void FindFreeRanges(const std::string &name) = 0;
-		virtual void AddPinnedInstructions() = 0;
-		virtual void ReservePinnedInstructions() = 0;
-		virtual void PreReserve2ByteJumpTargets() = 0;
-		virtual void ExpandPinnedInstructions() = 0;
-		virtual void Fix2BytePinnedInstructions() = 0;
-		virtual void CreateDollops() = 0;
-		virtual void PlaceDollops() = 0;
-		virtual void WriteDollops() = 0;
-		virtual void UpdatePins() = 0;
-		virtual void OptimizePinnedInstructions() = 0;
-		virtual void AskPluginsAboutPlopping() = 0;
-		virtual void UpdateCallbacks() = 0;
-		virtual void PrintStats() = 0;
-		virtual void RecordPinnedInsnAddrs() = 0;
-	
 	public:
 		/*
-		 * These are public functions that the SDK user
-		 * way want to use.
+		 * These are public functions that the SDK user way want to use.
 		 */
 		virtual int DetermineWorstCaseInsnSize(libIRDB::Instruction_t*, bool account_for_jump = true) = 0;
 
@@ -89,6 +71,7 @@ class Zipr_t
         	virtual libIRDB::FileIR_t *GetFileIR()=0;
         	virtual Zipr_SDK::InstructionLocationMap_t *GetLocationMap()=0; 
 		virtual Zipr_SDK::DollopManager_t *GetDollopManager()=0;
+		virtual Zipr_SDK::PlacementQueue_t* GetPlacementQueue()=0;
 };
 
 };