use chained accessors to reduce boilerplate code