less levels of indirection and better naming conventions (thanks @jerith)