That's true, but I'm afraid of having them be public until we decide that this is the best API for this functionality. For example, another thing we might do is add these to SparkListener (which is public). The problem is that it's hard to remove a public API once you make one, so I'd rather leave these private for now and revisit later.