an Cache
A revision of the whole this. This is meant to be used by the descendants. Free the returned pointer with g_free, when no longer needed.