use interfaces for task communication