Added a bunch of functional groups and abstracted Indexer and added the Driver