The current interface is hard to use and extend. We can refactor those parts to make them easier to use and work with.