I don't have a good example of this right now, but one of the reasons why you must foo_read the foo and can't just read the foo, is that a foo object may inherit from some other object, and that other object may not just be an abstract class, but have some meaning, and possibly UI, within the toolkit. You may not want to give the read permission to the base object... hence foo_read, which only foo UI cares about.