Move judgement pattern to separated service
Add neighbors caching for each element
Refactor neighbors locator