moar abstraction: