class Process:
    def __init__(self):
        self.env = None
        self.__process = None

    def start(self, env, *args):
        self.env = env
        self.__process = env.process(self.process(*args))

    def process(self, *args):
        raise NotImplementedError
        yield None


class TickProcess(Process):
    def __init__(self, tick):
        super().__init__()
        if tick < 1:
            raise ValueError('tick must be greatert than or equal to 1')
        self._tick = tick

    def tick(self):
        return self.env.timeout(self._tick)