convenience methods eliminate most of the boilerplate