Add caching to all modules and make them more similar to each other

Needs a commit to K3.0 in order to work.