Code refactoring: Make Indexer class abstract so we can have different indexers.
Add factory, support for many different indices and management