class PeanutsTask(Task):

    def __init__(self, chunks, **kwargs):
        self.number_of_chunks = chunks
        super().__init__(**kwargs)

    def get_peanuts(self):
        # does something
		# calls chunk_streamers
		# returns something

    def chunk_peanuts(self, peanuts: List[int]):
        # chunks... the peanuts
		# returns chunked peanuts

    def segment_peanuts(self, chunk: List) -> List[List]:
        # segments the peanuts
		# returns segmented peanuts

    def run(self):
        peanuts = self.get_peanuts()
        chunked_peanuts = self.chunk_peanuts(peanuts)
        #### why cant I do segment_peanuts.map(chunked_peanuts)?
		# how can I return a result from run to use it in the future downstream tasks?