diff --git a/include/zipr_impl.h b/include/zipr_impl.h
index 8406fbd48ed2482352f891815ad1eb0642963438..f4a340db087a51ad46557ce3936170669ffd43b1 100644
--- a/include/zipr_impl.h
+++ b/include/zipr_impl.h
@@ -396,7 +396,8 @@ class ZiprImpl_t : public Zipr_t
 		// support
 		RangeAddress_t extend_section(ELFIO::section *sec,ELFIO::section *next_sec);
 
-		void dump_map();
+		void dump_scoop_map();
+		void dump_instruction_map();
 
 	public: 
 
diff --git a/src/elfwrite.cpp b/src/elfwrite.cpp
index 22a3ce7ac7fc14d9d514218eae901690dfd78b97..e65edb080fa2f82361b0257e94d8f2e096ac25df 100644
--- a/src/elfwrite.cpp
+++ b/src/elfwrite.cpp
@@ -229,7 +229,8 @@ template <class T_Elf_Ehdr, class T_Elf_Phdr, class T_Elf_Addr, class T_Elf_Shdr
 void ElfWriterImpl<T_Elf_Ehdr,T_Elf_Phdr,T_Elf_Addr, T_Elf_Shdr, T_Elf_Sym, T_Elf_Rel, T_Elf_Rela, T_Elf_Dyn>::LoadEhdr(FILE* fin) 
 {
 	fseek(fin,0,SEEK_SET);
-	fread(&ehdr,sizeof(ehdr), 1, fin);
+	auto res=fread(&ehdr,sizeof(ehdr), 1, fin);
+	assert(res==1);
 };
 
 template <class T_Elf_Ehdr, class T_Elf_Phdr, class T_Elf_Addr, class T_Elf_Shdr, class T_Elf_Sym, class T_Elf_Rel, class T_Elf_Rela, class T_Elf_Dyn>
@@ -239,7 +240,8 @@ void ElfWriterImpl<T_Elf_Ehdr,T_Elf_Phdr,T_Elf_Addr,T_Elf_Shdr, T_Elf_Sym, T_Elf
 	phdrs.resize(ehdr.e_phnum);
 	for(unsigned int i=0;i<phdrs.size();i++)
 	{
-		fread(&phdrs[i], sizeof(phdrs[i]), 1, fin);
+		auto res=fread(&phdrs[i], sizeof(phdrs[i]), 1, fin);
+		assert(res==1);
 	}
 };
 
diff --git a/src/zipr.cpp b/src/zipr.cpp
index c76d1f8581fb770b1a6c67d6a6e19d1e057f3da7..d37d0e8975d24ab0a652d8f56d45af957508a1b3 100644
--- a/src/zipr.cpp
+++ b/src/zipr.cpp
@@ -3806,7 +3806,8 @@ void ZiprImpl_t::OutputBinaryFile(const string &name)
 	delete ew;
 	string chmod_cmd=string("chmod +x "); 
 	chmod_cmd=chmod_cmd+elfwriter_filename;
-	system(chmod_cmd.c_str());
+	auto res=system(chmod_cmd.c_str());
+	assert(res!=-1);
 }
 
 
@@ -3819,7 +3820,8 @@ void ZiprImpl_t::PrintStats()
 
 	// and dump a map file of where we placed instructions.  maybe guard with an option.
 	// default to dumping to zipr.map 
-	dump_map();
+	dump_scoop_map();
+	dump_instruction_map();
 }
 
 
@@ -4096,9 +4098,6 @@ void ZiprImpl_t::UpdateCallbacks()
 	RangeSet_t::iterator range_it=memory_space.FindFreeRange((RangeAddress_t) -1);
 	assert(memory_space.IsValidRange(range_it));
 
-	RangeAddress_t end_of_new_space=range_it->GetStart();
-	RangeAddress_t start_addr=GetCallbackStartAddr();
-
 	set<std::pair<DollopEntry_t*,RangeAddress_t> >::iterator it, it_end;
 
 	for(it=unpatched_callbacks.begin(), it_end=unpatched_callbacks.end();
@@ -4134,10 +4133,28 @@ void ZiprImpl_t::UpdateCallbacks()
 	}
 }
 
-void ZiprImpl_t::dump_map()
+void ZiprImpl_t::dump_scoop_map()
 {
+	string filename="scoop.map";	// parameterize later.
+    	std::ofstream ofs(filename.c_str(), ios_base::out);
+	ofs <<left<<setw(10)<<"ID"
+	    <<left<<setw(10)<<"StartAddr"
+	    <<left<<setw(10)<<"Size"
+	    <<left<<setw(10)<<"Perms"
+	    <<left<<setw(10)<<"Name"<<endl;
 
-// std::map<libIRDB::Instruction_t*,RangeAddress_t> final_insn_locations
+	for(const auto &scoop : m_firp->GetDataScoops())
+	{
+		ofs << hex << setw(10)<<scoop->GetBaseID()
+		    <<hex<<left<<setw(10)<<scoop->GetStart()->GetVirtualOffset()
+		    <<hex<<left<<setw(10)<< scoop->GetSize()
+		    <<hex<<left<<setw(10)<< scoop->getRawPerms()
+		    <<hex<<left<<setw(10)<< scoop->GetName()
+		    << endl;
+	}
+}
+void ZiprImpl_t::dump_instruction_map()
+{
 	string filename="zipr.map";	// parameterize later.
     	std::ofstream ofs(filename.c_str(), ios_base::out);
 
@@ -4164,9 +4181,6 @@ void ZiprImpl_t::dump_map()
 
 		
 	}
-
-
-
 }
 
 void ZiprImpl_t::UpdateScoops()