Engine updated, using Cache<T>