a bit more abstract
ok how to solve this
looks good
second addition looks good, now we need some tests