diff --git a/UtilityApps/src/dumpdetector.cpp b/UtilityApps/src/dumpdetector.cpp
index f1c485d3746608697b9c1efec86b192a8dde9bcd..9c9f346a5994c361ab36a117ca264dc9a1977f87 100644
--- a/UtilityApps/src/dumpdetector.cpp
+++ b/UtilityApps/src/dumpdetector.cpp
@@ -39,13 +39,20 @@ using namespace dd4hep ;
 
 int main(int argc, char** argv ){
     
-  if( argc != 2 ) {
-    std::cout << " usage: dumpdetector compact.xml " << std::endl ;
+  if( argc < 2 ) {
+    std::cout << " usage: dumpdetector compact.xml [-s]" 
+	      << "  -s :  also print surfaces " 
+	      << std::endl ;
+
     exit(1) ;
   }
   
   std::string inFile =  argv[1] ;
 
+
+  bool printSurfaces = ( argc>2 && !strcmp( argv[2] , "-s" ) );
+
+
   LCDD& lcdd = LCDD::getInstance();
 
   lcdd.fromCompact( inFile );
@@ -110,12 +117,14 @@ int main(int argc, char** argv ){
 
     std::cout << de.name() << "[ path: "<< de.placementPath ()  <<  "] (id: " << de.id() << ") - sens type : " << lcdd.sensitiveDetector( de.name() ).type() << "\t surfaces : " <<  ( sL.empty() ? 0 : sL.size()  ) << std::endl ;
 
-    // for( SurfaceList::const_iterator it = sL.begin() ; it != sL.end() ; ++it ){
-    //   Surface* surf =  *it ;
-    //   std::cout << " ------------------------- " 
-    // 		<< " surface: "  << *surf         << std::endl
-    // 		<< " ------------------------- "  << std::endl ;
-    // }
+    if( printSurfaces ){
+      for( SurfaceList::const_iterator sit = sL.begin() ; sit != sL.end() ; ++sit ){
+	const ISurface* surf =  *sit ;
+	std::cout << " ------------------------- " 
+		  << " surface: "  << *surf         << std::endl
+		  << " ------------------------- "  << std::endl ;
+      }
+    }
   }
 
   std::cout << "############################################################################### "  << std::endl  << std::endl  ;