this seems to get more and more hacky - let's refactore a bit