add cache, buggy