abstract thread-static cache implementation
just inherit and implement evaluate method