Extract interface, add more strict generic in evict