added cache read with 3 levels