I'm thinking exception now.  If something passes a nil to this, there is a big problem and we want to crash the app (with a nice message).  If there is no block passed, I suppose we could crash it there because it's also getting the wrong arguments, and failing silently could introduce bugs.