really busted refactoring, don't use this commit