this seems to work, now let's abstract from this