refactor
refactor
added: caching + performance test