introduce a BaseWithDict

gets rid of code duplication and is still easy to explain