added cache and controller