small changes
SemanticIndex cache extracted into a separate class