Extra generic convenience utilities
Initial chapter 8 commit--partly through node.clj