added the `OptionsProvider` abstract class and have `Editor` implement it + tests