Creating a pull request to prepare for final reviews before the big merge.

@karanpoddar No need to do anything about this, just using this to go through all of the changes again before we merge it back.
Keeping this as a separate base class/interface is getting pretty useless. Opened a task to instead use a generic plugin interface for this.