added cache support
major update