changed: Implement cache1 / cache2 and seperate read/write pointers