replace `ExtensionInterface` with abstract `Extension`