added output cache