when you think about why different parts do their bits, then it makes more sense of why you'd separate them in certain ways. The profile code describes how the stack is built and configured and makes all the architecture choices that you don't want to expose to change. Then the hiera parameters layer is simpler and easier to use. It's only the params that you want to be customizable.