Add uses_executor trait and make the executor wrapper part of the public interface.