Index: src/Actions/FillAction/FillRegularGridAction.cpp
===================================================================
--- src/Actions/FillAction/FillRegularGridAction.cpp	(revision a884522bcc22ba620339ea5c6358f0408ce9007d)
+++ src/Actions/FillAction/FillRegularGridAction.cpp	(revision 5a4cbcba2db951efef5711b10c3f27755464e607)
@@ -59,4 +59,9 @@
   // get selected atoms and find containing sphere
   World::AtomComposite atoms = World::getInstance().getSelectedAtoms();
+  if (atoms.size() == 0) {
+    ELOG(2, "No atoms selected, aborting,");
+    return Action::failure;
+  }
+
   Vector center;
   double radius = 0.;
@@ -90,8 +95,8 @@
   radius += 1e+6*std::numeric_limits<double>::epsilon();
   radius = std::max(params.mindistance, radius);
-  LOG(1, "INFO: The " << atoms.size() << " are contained in a sphere at "
+  LOG(2, "INFO: The " << atoms.size() << " are contained in a sphere at "
       << center << " with radius " << radius << ".");
   Shape *s = new Shape(Sphere(zeroVec, radius));
-  LOG(1, "INFO: Created sphere at " << s->getCenter() << " and radius " << s->getRadius() << ".");
+  LOG(2, "INFO: Created sphere at " << s->getCenter() << " and radius " << s->getRadius() << ".");
 
   // create set of atomic ids
@@ -100,9 +105,9 @@
       boost::bind(&atom::getId, _1) );
   Cluster::atomIdSet atomset(atomIds.begin(), atomIds.end());
-  LOG(1, "INFO: Created atomset of size " << atomset.size() << ".");
+  LOG(2, "INFO: Created atomset of size " << atomset.size() << ".");
 
   // create cluster
   ClusterInterface::Cluster_impl cluster(new Cluster(atomset, *s));
-  LOG(1, "INFO: Created cluster of size " << atomset.size() << ".");
+  LOG(2, "INFO: Created cluster of size " << atomset.size() << ".");
 
   // create predicate, mesh, and filler
Index: src/Filling/Filler.cpp
===================================================================
--- src/Filling/Filler.cpp	(revision a884522bcc22ba620339ea5c6358f0408ce9007d)
+++ src/Filling/Filler.cpp	(revision 5a4cbcba2db951efef5711b10c3f27755464e607)
@@ -75,5 +75,5 @@
   std::stringstream output;
   std::for_each( nodes.begin(), nodes.end(), output << boost::lambda::_1 << " ");
-  LOG(1, "INFO: Listing nodes to check: " << output.str());
+  LOG(3, "DEBUG: Listing nodes to check: " << output.str());
   if (nodes.size() == 0) {
     ASSERT(false,
@@ -89,6 +89,8 @@
 
   if (FillNodes.size() == 0) {
-    LOG(1, "INFO: For none of the nodes did the predicate return true.");
+    ELOG(2, "For none of the nodes did the predicate return true.");
     return;
+  } else {
+    LOG(1, "INFO: " << FillNodes.size() << " out of " << nodes.size() << " returned true from predicate.");
   }
 
Index: src/Filling/Predicates/IsVoidNode_FillPredicate.cpp
===================================================================
--- src/Filling/Predicates/IsVoidNode_FillPredicate.cpp	(revision a884522bcc22ba620339ea5c6358f0408ce9007d)
+++ src/Filling/Predicates/IsVoidNode_FillPredicate.cpp	(revision 5a4cbcba2db951efef5711b10c3f27755464e607)
@@ -46,12 +46,12 @@
 bool IsVoidNode(const LinkedCell::LinkedCell_View &LC, const Shape &shape, const Node &n)
 {
-  LOG(1, "INFO: Node is " << n << ".");
-  LOG(1, "INFO: Original shape is at " << shape.getCenter() << " with radius of "
+  LOG(3, "DEBUG: Node is " << n << ".");
+  LOG(3, "DEBUG: Original shape is at " << shape.getCenter() << " with radius of "
       << shape.getRadius() << ".");
   const Shape shapeAtn = translate(shape, n);
-  LOG(1, "INFO: Translated shape is at " << shapeAtn.getCenter() << ".");
+  LOG(3, "DEBUG: Translated shape is at " << shapeAtn.getCenter() << ".");
   LinkedCell::LinkedList neighborlist = LC.getAllNeighbors(
       shapeAtn.getRadius(), shapeAtn.getCenter());
-  LOG(1, "INFO: we have " << neighborlist.size() << " possible neighbors.");
+  LOG(3, "DEBUG: we have " << neighborlist.size() << " possible neighbors.");
   LinkedCell::LinkedList::const_iterator neighboriter =
       std::find_if(neighborlist.begin(), neighborlist.end(),
@@ -66,5 +66,5 @@
   const LinkedCell::LinkedCell_View LC = World::getInstance().getLinkedCell(_shape.getRadius());
   AnyFillPredicate::FillPredicator function = boost::bind(&IsVoidNode, LC, _shape, _1);
-  LOG(1, "INFO: Create IsVoidNode_FillPredicate from shape at "
+  LOG(2, "DEBUG: Create IsVoidNode_FillPredicate from shape at "
       << _shape.getCenter() << " and radius " << _shape.getRadius() << ".");
   FillPredicate::impl_ptr impl(new AnyFillPredicate(function));
Index: src/IdPool_impl.hpp
===================================================================
--- src/IdPool_impl.hpp	(revision a884522bcc22ba620339ea5c6358f0408ce9007d)
+++ src/IdPool_impl.hpp	(revision 5a4cbcba2db951efef5711b10c3f27755464e607)
@@ -96,5 +96,5 @@
     return;
   }
-  LOG(1, "STATUS: Defragmenting id pool.");
+  LOG(3, "DEBUG: Defragmenting id pool.");
   for(typename IdPool_t::iterator iter = pool.begin();iter!=pool.end();) {
     // see if this range is adjacent to the next one
Index: src/Tesselation/boundary.cpp
===================================================================
--- src/Tesselation/boundary.cpp	(revision a884522bcc22ba620339ea5c6358f0408ce9007d)
+++ src/Tesselation/boundary.cpp	(revision 5a4cbcba2db951efef5711b10c3f27755464e607)
@@ -1029,5 +1029,5 @@
   for (int i=0;i<NDIM;i++) {
     phi[i] = (random()/(rng_max-rng_min))*(2.*M_PI);
-    std::cout << "Random angle is " << phi[i] << std::endl;
+    LOG(4, "DEBUG: Random angle is " << phi[i] << ".");
   }
 
