a little less repetition a little more abstraction