Separate synchronous objects from task implementation