I like the abstraction here, nice!