oooooh, great abstraction