extract cache handling to erlide_cache.erl