add output cache support