let's not build the "most powerful" API but the one that suits the current use-cases the best. If there is enough evidence that such an API is necessary, we can easily refactor. Building it at this point is probably going to result in over engineered code.