This guard seems a bit too defensive. it should be the caller's responsibility to not pass in invalid arguments. I think this should really blow up if you pass in ```nil```.