refactor cache recycler, introduce thread local one, and default to it