def METHOD_NAME(self, request):
    self.running = False
    # setup html
    self.html = HTML(
        H1('Game Of Life'),
        # controls
        'Width: ',
        NumberInput(
            _id='width',
            value=60,
        ),
        ' Height: ',
        NumberInput(
            _id='height',
            value=40,
        ),
        Button(
            'Resize',
            _id='resize',
            handle_click=self.handle_resize,
        ),
        Button(
            'Reset',
            _id='reset',
            handle_click=self.handle_reset,
        ),
        Button(
            'Start',
            _id='start',
        ),
        Button(
            'Stop',
            _id='stop',
            disabled=True,
            handle_click=self.handle_stop,
        ),
        # generation counter
        Div('Generation: ', Span('0', _id='generation')),
        # board
        Div(_id='board'),
    )
    # setup board
    self.board = self.html.query_selector('#board')
    self.generation = self.html.query_selector('#generation')
    self.setup_board()
    # main loop
    while True:
        self.show(self.html)
        # wait for 'Start' to be pressed
        self.await_click(self.html.query_selector('#start'))
        # reset generation counter
        generation = 0
        self.generation.set_text('0')
        self.show(self.html)
        # start
        self.running = True
        self.disable_controls()
        while self.running:
            # calculate next generation
            next_generation = self.generate_next_generation()
            # stop when the board stops evolving
            if numpy.array_equal(self.data, next_generation):
                self.running = False
                break
            self.write_data_to_board(next_generation)
            self.data = next_generation
            # increase generation counter
            generation += 1
            self.generation.set_text(str(generation))
            self.show()
            self.sleep(0.1)
        self.enable_controls()