cache and buffer