change abstract base class registration to use a decorator in modes