Should have separate interface+impl.