refactor
refactor add method cache