if cache dir doesn't exist, make it